Tja, wederom een hersenkraker voor de SQL-guru's onder ons:
Ik probeer twee tabellen te koppelen met een left join. Tot dusver geen probleem. Echter tegelijkertijd probeer ik een subquery op een van de tabellen los te laten op een max. date te vinden. Op de een op andere manier gaat hier iets mis, want ik houd enkel inner join resultaten over.
Tabellen:
tblparticipant:
lab_id
module_id
bv:
192 4
192 5
192 6
192 7
192 8
194 1
194 2
194 3
tblresults_9
lab_id
dtm_insert
bv.
189 2005-09-12 10:28:52
192 2005-09-11 14:45:56
192 2005-09-12 15:36:54
194 2005-09-09 16:11:15
194 2005-09-09 16:12:29
196 2005-09-12 14:57:47
query:
Ik wil:
- Alle lab_id's van tblparticipant met module_id=4;
- Deze gekoppeld aan de lab_id van tabel tblresults_9
- Wanneer tblresults_9 twee of meer records heeft dan wil ik alleen degene met de laatste datum zien (laatste invoer).
Mijn idee:
Dit gaat goed, maar geeft geen lab_id's uit tblparticipant, die niet in in tblresults_9 terugkomen. Geen left join dus.
Help...Wie heeft raad?
Ik probeer twee tabellen te koppelen met een left join. Tot dusver geen probleem. Echter tegelijkertijd probeer ik een subquery op een van de tabellen los te laten op een max. date te vinden. Op de een op andere manier gaat hier iets mis, want ik houd enkel inner join resultaten over.
Tabellen:
tblparticipant:
lab_id
module_id
bv:
192 4
192 5
192 6
192 7
192 8
194 1
194 2
194 3
tblresults_9
lab_id
dtm_insert
bv.
189 2005-09-12 10:28:52
192 2005-09-11 14:45:56
192 2005-09-12 15:36:54
194 2005-09-09 16:11:15
194 2005-09-09 16:12:29
196 2005-09-12 14:57:47
query:
Ik wil:
- Alle lab_id's van tblparticipant met module_id=4;
- Deze gekoppeld aan de lab_id van tabel tblresults_9
- Wanneer tblresults_9 twee of meer records heeft dan wil ik alleen degene met de laatste datum zien (laatste invoer).
Mijn idee:
code:
1
2
3
4
5
6
7
8
9
| SELECT p.lab_id,
p.module_id,
tblresults_9.dtm_insert
FROM
tblparticipant p LEFT OUTER JOIN tblresults_9 ON p.lab_id = tblresults_9.lab_id
WHERE
p.module_id=4 AND
dtm_insert =
(SELECT MAX(dtm_insert) FROM tblresults_9 WHERE lab_id=p.lab_id); |
Dit gaat goed, maar geeft geen lab_id's uit tblparticipant, die niet in in tblresults_9 terugkomen. Geen left join dus.
Help...Wie heeft raad?