webForumDet fria alternativet

Distinct problem

2 svar · 910 visningar · startad av Gladh

GladhMedlem sedan maj 20013 024 inlägg
#1

Jag har ett litet problem :)

Det är så att jag har en fellogg där många applikationer skriver ner till, och när ett fel inträffas så loggas även följdfelen som uppstår pga av detta fel. Eftersom jag enkelt vill kunna fel para ihop alla fele med varandra så har jag skapat ett XceptionId som skrivs till varje fel, så om jag får 5 följd fel pga av ett fel, så har alla dessa 6 fel samma XceptionId.

Mitt problem blir när jag vill hämta ut informationen från databasen, då vill jag bara visa det första felet för varje "felgrupp" och samtidigt så skall det sorteras så att nyaste felen visas först.

Enkelt tyckte jag.

select distinct xceptionid from message 
	where LogLevel = 'Error'
	order by LogMessageDateTime desc

Så nu visas endast endast ett XceptionId för hela "gruppen" och det senast felet visas först, problemet blir bara att jag måste har med LogMessageDateTime i min SELECT annars så fungerar inte DISTINCT, men eftersom LogMessageDateTime är unikt så får jag ju alla felen. Jag vill ju bara visa ett per "felgrupp".

Här kommer ett exempel på hur det ser ut.

Could not create queued component queue:/new:BRF.EnterpriseGateway.Gateway.GatewayManager	2005-04-09 16:08:20.083	60935C82-9EB4-4B11-81C7-EE7524CB03DF
Aktivering af COM+ mislykkedes, fordi en initialiseringsfunktion mislykkedes.  Du kan finde yderligere oplysninger i hændelsesloggen.	2005-04-09 16:08:20.160	38299D6F-5BC9-4FD2-B156-316015C0B1AC
Could not create queued component queue:/new:BRF.EnterpriseGateway.Gateway.GatewayManager	2005-04-09 16:08:20.147	3BBE2C69-0077-4EE2-A3C2-B831A3BC8A22
Ugyldig klassestreng	2005-04-09 16:08:20.147	3BBE2C69-0077-4EE2-A3C2-B831A3BC8A22
Aktivering af COM+ mislykkedes, fordi en initialiseringsfunktion mislykkedes.  Du kan finde yderligere oplysninger i hændelsesloggen.	2005-04-09 16:08:19.927	DA1984F5-817F-4572-BE9A-33F8EFA3B313
Aktivering af COM+ mislykkedes, fordi en initialiseringsfunktion mislykkedes.  Du kan finde yderligere oplysninger i hændelsesloggen.	2005-04-09 16:08:20.270	FC9010BC-7542-40BC-B0B3-02B81847A856
An unexpected error occurred in EnterpriseGatewayWS. (Check the log for further information)	2005-04-09 16:08:20.160	38299D6F-5BC9-4FD2-B156-316015C0B1AC
Aktivering af COM+ mislykkedes, fordi en initialiseringsfunktion mislykkedes.  Du kan finde yderligere oplysninger i hændelsesloggen.	2005-04-09 16:08:20.100	47110645-2F77-4DEC-B41D-65D06B152799

Som man ser på tiden och XceptionId så är det inte säkert att de kommer i rätt ordning så därför vill jag sortera på LogMessageDateTime.

Någon som har ett bra förslag som inte dödar prestanda, tabellen växer ju sig rätt stor efter ett tag.

- M

TomasJMedlem sedan feb. 200563 inlägg
#2

Re: Distinct problem

Du kanske kan använda en group by istället för en distinct, ungefär så här:

SELECT xceptionid, min(LogMessageDateTime) 
FROM message
GROUP BY xceptionid
ORDER BY 2 desc

Beroende på RDB-hanterare så kanske det blir nåt sånt här istället med en aliaskolumn:

SELECT xceptionid, min(LogMessageDateTime)  as mittAlias
FROM message
GROUP BY xceptionid
ORDER BY mittAlias desc

/ Tomas

GladhMedlem sedan maj 20013 024 inlägg
#3

Tack Tomas, misstänkte att man kunde använda Group By. Kom på det när jag körde hemfrån jobbet. Skall testa på Måndag, imorgon tänker jag iallfall inte jobba över (30 timmar extra på 6 dag, får räcka)

- M

Genererad på 371 ms · cache AV · v20260730165559-full.f96bc7eb