29. august 2006 - 12:29Der er
26 kommentarer og 2 løsninger
Udskriv kun bruger én gang
Jeg har denne select top 10 * from logins order by Logindato desc hvor jeg henter de sidste 10 login fra min database.
Men lad os sige den samme bruger er logget ind flere gange efter hinanden, så kommer brugeren jo til at blive udskrevet flere gange. Der vil jeg at brugeren kun udskriven én gang.
Set rsListe= Conn.Execute("SELECT TOP 10 * FROM logins INNER JOIN (SELECT DISTINCT brugerid FROM logins) AS logins2 ON logins.brugerid = logins2.brugerid ORDER BY logindato DESC")
<%Do While Not rsListe.EOF%> <%=rsListe("brugerid")%> <% rsListe.MoveNext Loop rsListe. close set rsListe= Nothing %>
Hmm... det undrer mig at hvis du kan finde kolonnen med din egen SQL, at du ikke kan med den modificerede. Jeg synes jo umiddelbart at det er det samme resultat der hentes... og dog! Prøv lige:
SELECT TOP 10 logins.* FROM logins INNER JOIN (SELECT DISTINCT brugerid FROM logins) AS logins2 ON logins.brugerid = logins2.brugerid ORDER BY logindato DESC
SELECT TOP 10 logins.* FROM logins INNER JOIN (SELECT DISTINCT brugerid FROM logins) AS logins2 ON logins.brugerid = logins2.brugerid ORDER BY logindato DESC
Med denne der er ingen fejl, men den udskriver tilgengæld alle, og ikke "gruperet"
OK, jamen, så er det da den mest åbenlyse løsning. Jeg tog bare udgangspunkt i din oprindelige SQL, hvor du vælger alle kolonner (hvilket man kun bør gøre hvis man skal bruge dem allesammen).
Anyway! Så bør du umiddelbart kunne sortere efter logindato med denne SQL:
SELECT distinct TOP 10 brugerid FROM logins ORDER BY logindato DESC
Jeg har lige fedtet lidt med en access-database, så jeg kunne se resultatet af det jeg lavede og jeg tror denne (en lille variation af nielle's forslag) fungerer:
SELECT TOP 10 brugerid FROM ( SELECT brugerid, MAX(dato) AS sidsteLogin FROM taTest_Logins GROUP BY brugerid ORDER BY MAX(dato) DESC )
Forskellen er at man ikke må bruge kolonnealias til at sortere efter, her skal man bruge hele udtrykket/funktionen (i dette tilfælde MAX(dato))
Var lige min fejl.., fik lige skrevet forkert men SELECT TOP 10 brugerid FROM ( SELECT brugerid, MAX(dato) AS sidsteLogin FROM taTest_Logins GROUP BY brugerid ORDER BY MAX(dato) DESC ) virker
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.