Ik heb het volgende datamodel:
Elke sessie heeft dus een aantal logentries. Ik wil per sessie de nieuwste logEntry hebben. Wel dat is niet zo'n probleem (ik weet niet of de SQL syntax helemaal correct is, ik heb thuis geen SQL Server):
Het probleem is, ik wil niet per sessie de nieuwste datum hebben, maar het veld idFunctionName.
Het probleem an sich is al opgelost: ik gebruik bovenstaande query als sub-query en dan join ik op het datum-veld (de resolutie van datetime is in SQL volgens mij 1ms, en zo snel log ik niet).
En anders kan je het natuurlijk ook oplossen met een sql-cursor of met ADO.
Ik vind het alleen raar dat je met aggregate functions alleen naar een waarde kan zoeken (met SUM en AVG is dat natuurlijk niet zo gek, maar met MIN en MAX heb je volgens mij wel vaker dat je een ander attribuut van een record wilt hebben).
Of is een andere manier om het nieuwste record te vinden
code:
1
2
3
4
5
| SESSION------<-LOGENTRY
idSession idLogEntry
... idSession
dtmFunctionStart
idFunctionName |
Elke sessie heeft dus een aantal logentries. Ik wil per sessie de nieuwste logEntry hebben. Wel dat is niet zo'n probleem (ik weet niet of de SQL syntax helemaal correct is, ik heb thuis geen SQL Server):
code:
1
2
3
4
| SELECT idSession, Max(dtmFunctionStart) FROM SESSION INNER JOIN LOGENTRY ON SESSION.idSession = LOGENTRY.idSession GROUP BY idSession |
Het probleem is, ik wil niet per sessie de nieuwste datum hebben, maar het veld idFunctionName.
Het probleem an sich is al opgelost: ik gebruik bovenstaande query als sub-query en dan join ik op het datum-veld (de resolutie van datetime is in SQL volgens mij 1ms, en zo snel log ik niet).
En anders kan je het natuurlijk ook oplossen met een sql-cursor of met ADO.
Ik vind het alleen raar dat je met aggregate functions alleen naar een waarde kan zoeken (met SUM en AVG is dat natuurlijk niet zo gek, maar met MIN en MAX heb je volgens mij wel vaker dat je een ander attribuut van een record wilt hebben).
Of is een andere manier om het nieuwste record te vinden