Probleem bij selectiequery

Status
Niet open voor verdere reacties.

rista62

Gebruiker
Lid geworden
25 nov 2009
Berichten
73
Hallo,

Ik heb een tabel (tbl01-Leden) gemaakt met een aantal leden. Vervolgens een query (Qry01OpnieuwLid) gemaakt waarin ik uitsluitend de leden wil zien die al een keer eerder lid zijn geweest.
Helaas zie ik in de query maar 1 lid als resultaat terwijl ik er nog één had verwacht namelijk "Kloos", die komt ook 2 keer voor in de tbl01-Leden. Hoe kan het dat die niet zichtbaar is na draaien van de query?
Kan iemand mij helpen?
Gr.
R.
 

Bijlagen

Eigenlijk heb je teveel velden meegenomen in je query, waardoor je het resultaat vervuilt. In dit geval is het veld [LidLaatstBekendePlaats] de boosdoener. Omdat je hierop groepeert, krijg je voor persoon "Kloos" twee aparte records als output, omdat er bij één record een plaats is ingevuld, en in het andere record niet.
Als je deze query gebruikt, zul je zien dat het resultaat wel klopt.
Code:
SELECT [tbl01-Leden].LidNaam AS Lid, Max([tbl01-Leden].pkLidNr) AS [LidNr NW], Min([tbl01-Leden].pkLidNr) AS [LidNr OUD], Max([tbl01-Leden].LidIndatum) AS [LidAanstel NW], Min([tbl01-Leden].LidIndatum) AS [LidAanstel OUD], Min([tbl01-Leden].LidUitdatum) AS [LidUit OUD], Max([tbl01-Leden].LidUitdatum) AS [LidUit NW]
FROM [tbl01-Leden]
GROUP BY [tbl01-Leden].LidNaam
HAVING (((Count([tbl01-Leden].Id))>1))
ORDER BY [tbl01-Leden].LidNaam;
 
Eigenlijk heb je teveel velden meegenomen in je query, waardoor je het resultaat vervuilt. In dit geval is het veld [LidLaatstBekendePlaats] de boosdoener. Omdat je hierop groepeert, krijg je voor persoon "Kloos" twee aparte records als output, omdat er bij één record een plaats is ingevuld, en in het andere record niet.
Als je deze query gebruikt, zul je zien dat het resultaat wel klopt.
Code:
SELECT [tbl01-Leden].LidNaam AS Lid, Max([tbl01-Leden].pkLidNr) AS [LidNr NW], Min([tbl01-Leden].pkLidNr) AS [LidNr OUD], Max([tbl01-Leden].LidIndatum) AS [LidAanstel NW], Min([tbl01-Leden].LidIndatum) AS [LidAanstel OUD], Min([tbl01-Leden].LidUitdatum) AS [LidUit OUD], Max([tbl01-Leden].LidUitdatum) AS [LidUit NW]
FROM [tbl01-Leden]
GROUP BY [tbl01-Leden].LidNaam
HAVING (((Count([tbl01-Leden].Id))>1))
ORDER BY [tbl01-Leden].LidNaam;

Hallo,
Bedankt, maar als ik de velden LidLaatstBekendePlaats en LidLaatstBekendeRegio wel in de output van de query wil hebben, hoe kan ik dat oplossen?
Gr.
R.
 
Om te beginnen moet je de query om 'herintreders' op te vragen zo simpel mogelijk houden. Alle velden die afwijkende waarden zouden kunnen hebben, en waarvoor je dus dubbele records zou krijgen, moet je ofwel niet gebruiken, ofwel met een functie terugbrengen tot één waarde. Jouw probleem werd veroorzaakt doordat bij een persoon twee waarden werden gegenereerd voor het veld [LidLaatstBekendePlaats] waarop de functie Group By werd gebruikt. Door hier bijvoorbeeld Min, Max Eerste of Laatste te gebruiken, zou je dit veld alsnog kunnen gebruiken.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan