Aantal tellen door middel van een query op verschillende kolommen in een tabel

Status
Niet open voor verdere reacties.

jelleruben

Gebruiker
Lid geworden
11 nov 2006
Berichten
443
Hallo allemaal,

Ik heb in een Access een tabel met een drietal kolomen

B1 B2 B3

Deze kollomen kunnen dezelfde gegevens bevatten
bijv.
========================
B1| B2| B3|
------------------------
41| 41| 41|
41| 02| 39|
20| 41| 29|
========================

Ik maak een selectie query, om de aantal 41 op te tellen
voor 1 kolom lukt het me wel met:

SQL:
SELECT Count(tbl_taak_pp.bpp_b1) AS AantalVanbpp_b1
FROM tbl_taak_pp;

Maar kan ik bij deze aantal ook de aantallen van
de andere kolomen erbij optellen in één query?
 
Wat is het resultaat dat je wilt zien? Gaat het alleen om de getallen 41?
 
idd, ik wil weten hoevaak getal 41 voorkomt in alle drie de kollomen.

Als dat is gelukt zou ik het ook met andere getallen willen zien.

Ik dacht zo als ik het voor getal 41 weet, dat ik dan ook wel weet hoe het met de rest moet.
 
Dat zal je tegenvallen.... Voor één getal kun je nog wel een oplossing maken, maar die houdt dan wel in dat je 'hard' gaat kijken in de records naar een specifieke tekst of waarde. In een query kun je bijvoorbeeld een extra veld maken waarin je met een IIF voor elk veld controleert of de waarde 41 is. Aantal41: IIF([B1]=41;1;0)+IIF([B2]=41;1;0)+IIF([B3]=41;1;0). Vervolgens maak je een totalenquery waarin je het veld Aantal41 sommeert. Zoals gezegd: dit is een vrij rudimentaire oplossing, die nauwelijks algemeen te maken is. Al je kun de waarde 41 mischien vervangen door een vraagveld.
 
Kan je me vertellen wat je precies met "mischien vervangen door een vraagveld." bedoeld?

Edit: ik denk dat ik je begrijp. Alleen nu even kijken hoe ik het erin kan zetten. Want dan dien ik wel alle 41 vast uit de formule te halen.
 
Laatst bewerkt:
Ik bedoelde een Parameter veld. Als je dat zo hebt begrepen: prima! Die kun je het beste vastleggen in de query-definitie; dat doe je dus in het menu <Query> met de optie <Parameter>.
 
Mmh het is wel lastige dan ik dacht. Maar doormiddel van de parameter, kan ik dan de Query gebruiken voor elke getal die ik dan ingeef?

Want zou wel handig zijn als ik één basis Query heb, waarbij ik verschillende getallen kan gebruiken.
 
Ja, dat zie je goed. Een 'normale' parameter heeft wel als nadeel dat je altijd iets in moet voeren; met een IIF kun je eventueel afvangen dat je het veld ook leeg kunt laten, in welk geval je alsnog alle records te zien krijgt. Mocht je dat willen, dan post ik die code wel hier.
 
Hallo Michel,

Wederom bedankt voor je reactie, ik heb een kleine bestandje bij deze post gedaan.

Hier in staan een tabel tbl_001 Dit is een tabel met de gegevens.

kolom bpp_id = een record ID
kolom bpp_persoon_id = persoon id (wat in een andere tabel staat)
kolom bbp_b1 t/m bpp_b0 = hier staan de id's van "mogelijken". Deze moet opgeteld worden.
(Dus hoeveel 84 komen er voor en hoeveel 83 enz)
 

Bijlagen

Even terug naar je oorspronkelijke vraag:
========================
B1| B2| B3|
------------------------
41| 41| 41|
41| 02| 39|
20| 41| 29|
========================

Maak eerst een query waarbij je de gegevens in 1 kolom krijgt:
SELECT [B1] FROM JouwTabel
UNION
SELECT [B2] FROM JouwTabel
UNION
SELECT [B3] FROM JouwTabel

Doe vervolgens op deze query je tellingen.
Dan krijg je precies wat je wilt.
 
Een Union query kun je ook niet maken met een wizard; het is een samenvoeging van gegevens uit tabellen die verder niet aan elkaar te koppelen zijn. Omdat je gegevens hebt in twee verschillende tabellen, en je daar één tabel van wilt maken, moet je de gegevens eerst bij elkaar brengen. Een typische Union query ziet er dan ook zo uit:

SELECT [Sectoren 1].Cluster, [Sectoren 1].Afdeling
FROM [Sectoren 1];
UNION ALL
SELECT [Sectoren 2].Cluster, [Sectoren 2].Afdeling
FROM [Sectoren 2];

Het zijn eigenlijk twee aparte Selectiequeries, die door de UNION één resultaat opleveren. Daarbij worden de veldnamen uit de eerste tabel gebruikt als veldnaam. De velden uit de overige tabel(len) worden op volgorde toegevoegd aan de eerste query.
 
mmh nu raakt ik even de weg kwijt. Ik hoop dat het niet te veel gevraagt is. Maar zou je een voorbeeld ervan
kunnen laten (evt. met de database die ik heb geplaatst hebt)?

Edit: Michel bedoelde jij dit ook met de code?
 
Laatst bewerkt:
Tuurlijk...
 

Bijlagen

Dank je wel, ziet er anders uit dan ik verwacht had. Ik zal er eens mee gaan puzzelen,
Hoop dat ik het ga begrijpen.. Want zie ook zo letters in de SQL die ik dus niet had verwacht.
 
Ik heb een alias voor de tabellen gebruikt, omdat je steeds naar dezelfde tabel verwijst. Dat hoeft overigens niet, maar maakt het iets makkelijker in het gebruik (vind ik). Dus ik geef de tabel steeds een nieuwe letter (a, b, c) als naam, en zet die alias (tabelnaam) voor de veldnaam in het SELECT stuk.
 
Bekijk bijlage db2.zipNu je het zo zegt, is het inderdaad handig, om bepaalde zaken na te kunnen kijken.

Maar nu nog één stapje verder.

Ik heb de volgende vraag gekregen. Er zit nog een tabel erbij.

Persoongegevens, de persoon wonen in verschillende steden.

Is het mogelijk om de aantal nu ook per plaats te laten zien, of gaat dit voor SQL te ver?

In de tabel tbl_001 (wat nu op geteld is) staan persoons_id, die aan een ander tabel zijn gelinkt. Daar staan de persoongegevens in en ook zo de plaats naam.

Ik hoop dat jullie begrijp wat mijn bedoeling is.
 
Zoiets?
 

Bijlagen

Bijna, ik tel voor Amsterdam maar 2 maal het getal 90 volgens de Query is het 8.

Ik zou dus willen weten hoeveel getallen 90 en 84 enz. Amsterdam heeft. En zo voor iedere plaats dan die in de database staat.

EDIT:

Misschien is deze uitleg wat beter,

je ziet in mijn screenshot twee tabellen. tbl_persoongegevens eb tbl_001

Als je in de tabel tbl_persoongegevens kijkt zie je dat persoon 1 en 3 in Amsterdam wonen.

Ik wil dan van Amsterdam de getallen zien uit tbl_001. Ik kijk dan naar de persoons id
1 en 3 in dit geval (bpp_id 1903 en 1905) daar zie ik dat Amsterdam 2 x 90 en 1 x 83 heeft.

Zo zou ik een rapport per plaats willen zien.
 

Bijlagen

  • 001.jpg
    001.jpg
    86,4 KB · Weergaven: 48
Laatst bewerkt:
Dan maak je van het totaaloverzicht nog een kruistabel, en dan ben je er...
 

Bijlagen

Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan