Select Distinct

Status
Niet open voor verdere reacties.

RobertJB66

Gebruiker
Lid geworden
2 feb 2022
Berichten
132
Beste Form leden,

Graag zou ik het voor elkaar krijgen om "Batch" nummers weer te geven in de volgorde van de recentste naar de minst recentste (Leeftijd). Ieder Batch nummer moet maar éénkeer worden weergegeven.

met "Set rs = CurrentDb.OpenRecordset("SELECT DISTINCT Batch FROM JMDQ ORDER BY Batch ASC") " krijg ik keurig de batch gesorteerd op volgorde maar niet op leeftijd

Met "Set rs = CurrentDb.OpenRecordset("SELECT DISTINCT Batch FROM JMDQ ORDER BY Leeftijd ASC")" krijg ik een fout melding :eek: 'Run-time erro '3093': ORDER By clause (Leeftijd) conflicts with DISTINTC'
als ik het DISTINCT weg laat dan komt hetzelfde Batch nummer meerdere malen voor.


JMDQ is een Query die de data bevat
 
Ik neem aan dat de leeftijd een datumveld is en de hoogste datum dus de meest recente is? in dat geval :
Code:
Select batch 
from JMDQ
group by batch
order by max(Leeftijd)
 
Ik heb toch nog een aanvullende vraag.


De onderstaandw werkt perfect. Ik zou hem echter willen uitbreiden met het deel " & SFilter


Set rs = CurrentDb.OpenRecordset("SELECT Batch FROM JMDQ Group By Batch ORDER BY min(Leeftijd)")

De data van sFilter wordt ergens anders gevuld. In de onderstaande functie werkt het. :D

Set rs = CurrentDb.OpenRecordset("SELECT DISTINCT Batch FROM JMDQ WHERE " & sFilter)


Hoe kan ik het bij de niet DISCINCT versie werkend? Met mijn uitvoering, zie hieronder werkt het niet en krijg ik een fout melding:rolleyes::rolleyes:


Set rs = CurrentDb.OpenRecordset("SELECT Batch FROM JMDQ Group By Batch ORDER BY min(Leeftijd) WHERE " & sFilter)
 
SQL syntax:

SELECT [TOP]...
FROM ... [JOIN ON ...]
[WHERE ...]
[GROUP ON ...]
[HAVING...]
[ORDER BY...]

Volgorde waarin de instructie wordt uitgevoerd door de engine:
1. FROM (+ JOINS)
2. WHERE
3. GROUP BY
4. HAVING
5. SELECT
6. ORDER BY
7. TOP

Als je het query plan bekijkt dan kan je zien dat inwendig een distinct wordt uitgevoerd als een group by
 
ik dacht dat ik de oplossing had maar helaas :eek:

Set rs = CurrentDb.OpenRecordset("SELECT Batch FROM JMDQ WHERE " & sFilter GROUP BY Batch ORDER BY min(Leeftijd)")

Ik krijg het echter niet voor elkaar om de functie zonder foutmelding te komen.

Welke denkfout maak ik hier?;)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan