Ik heb een tabel met bijv het volgende :
ImportID RelationID ImportDate
1 100 30-5-2013
2 101 30-5-2013
3 100 31-5-2014
Nu wil ik het importid hebben wat hoort bij de laatste importdate per relatie, maar hoe krijg ik die zonder een subquery oid?
Ik kan wel iets verzinnen in de trant van :
Maar omdat ik de ImportID eigenlijk enkel maar nodig heb om verder te joinen heb ik eigenlijk het liefste op een zo simpel mogelijke manier het laatste importid van een bepaalde relatie.
En een self-inner-join vind ik nou niet echt het meest fraaie...
Wat zie ik hier over het hoofd? Want eigenlijk lijkt het mij een redelijke standaard vraag die gewoon in 1 query opgelost moet kunnen worden.
Maar als ik :
Doe dan krijg ik ik alle importids terwijl ik er maar 1 per relatie wil hebben (de laatste).
ImportID RelationID ImportDate
1 100 30-5-2013
2 101 30-5-2013
3 100 31-5-2014
Nu wil ik het importid hebben wat hoort bij de laatste importdate per relatie, maar hoe krijg ik die zonder een subquery oid?
Ik kan wel iets verzinnen in de trant van :
SQL:
1
2
3
| select a.ImportID, a.RelationID from a inner join (select RelationID, max(importDate) from a group by RelationID) as b on (b.RelationID=a.RelationID and b.ImportDate=a.ImportDate) |
Maar omdat ik de ImportID eigenlijk enkel maar nodig heb om verder te joinen heb ik eigenlijk het liefste op een zo simpel mogelijke manier het laatste importid van een bepaalde relatie.
En een self-inner-join vind ik nou niet echt het meest fraaie...
Wat zie ik hier over het hoofd? Want eigenlijk lijkt het mij een redelijke standaard vraag die gewoon in 1 query opgelost moet kunnen worden.
Maar als ik :
SQL:
1
2
3
| select a.ImportId, a.RelationID, max(a.ImportDate) from a group by a.ImportId, a.RelationID |
Doe dan krijg ik ik alle importids terwijl ik er maar 1 per relatie wil hebben (de laatste).