26. juni 2007 - 13:10Der er
29 kommentarer og 1 løsning
group by brugernavn
Selve group by funktionen virker, men jeg får ikke sorteret resultatet korrekt.
sql = "SELECT brugernavn, count(*) AS antal FROM fotos WHERE foto = 'ok' GROUP BY brugernavn ORDER BY id DESC LIMIT 10" Set rs = Conn.Execute(sql)
Jeg har 100 fotos fra 10 forskellige bruger, så her vises 10 bruger med hver 1 foto, men foto'et der kommer ud er efter id det ældste, og skal i stedet været det nyeste, nogen der kan se en løsning på det?
sql = "SELECT brugernavn, billedID, count(*) AS antal FROM fotos WHERE foto = 'ok' GROUP BY brugernavn ORDER BY id DESC LIMIT 10" Set rs = Conn.Execute(sql)
Jeg kan ikke bare fjerne DESC fordi, så vises der godt nok det nyeste foto, men helt nede i bunden af siden.
fennec >> måske skal sql'en skrives på en helt anden måde?
Ja, ok...kan godt se det gik lidt stærkt :-) Men... jeg er ikke helt med på hvor du vil hen? Du skriver "men foto'et der kommer ud er efter id det ældste" - hvornår kommer det foto ud?
ok...hmm...du kan jo ikke umiddelbart lave en sql med group by brugernavn og så også henter billedid ud... Jeg ville dele det op: sql1 = "SELECT brugernavn, count(*) AS antal FROM fotos WHERE foto = 'ok' GROUP BY brugernavn ORDER BY id DESC LIMIT 10" sql2 = "SELECT billedid from fotos where brugernavn = '" & brugernavn "' order by billedID desc LIMIT 0,1"
Vi skal lige have bestemt din database opbygning. Du har en fotos tabel. Hvilke kolonner er hvad i den, og hvad indeholder de?? billedID er det f.eks primærnøgle?
Ok, så ikke noget der kan bruges til en nem løsning :(
Den sql du skal bruge er noget ala: select brugernavn, count(*) AS antal, (select billedID from fotos f1 where f1.brugernavn=f.brugernavn order by id desc limit 1) as pic FROM fotos f WHERE f.foto = 'ok' GROUP BY f.brugernavn"
Manglede vist nogle f of f1 for en sikkerheds skyld: select f.brugernavn, count(f.id) AS antal, (select f1.billedID from fotos f1 where f1.brugernavn=f.brugernavn order by f1.id desc limit 1) as pic FROM fotos f WHERE f.foto = 'ok' GROUP BY f.brugernavn"
Nej, eneste anden måde er at lave det i en løkke: set rs = conn.execute("select distinct brugernavn from fotos") while not rs.eof set rs1 = conn.execute("select billedid from fotos where brugernavn = '" & rs("brugernavn") "' order by ID desc limit 1") rs.MoveNext wend
rs henter alle brugere. rs1 henter billedet ud for brugeren:
'Hent alle brugernavn distinct så de kun kommer en gang hver set rs = conn.execute("select distinct brugernavn from fotos")
'Løb brugernavne igennem while not rs.eof
'Hent det seneste billed for den aktuelle bruger set rs1 = conn.execute("select billedid from fotos where brugernavn = '" & rs("brugernavn") "' order by ID desc limit 1")
... Noget kode som sikkert udskriver brugernavn og billed ...
<% set rs = conn.execute("select * from fotos WHERE godkendt = '1' ORDER BY ID DESC LIMIT "& currentPage &","& pageSize &"") if not rs.eof then do while not rs.eof
isonline = false
For idx = LBound(brugernavneArr) To UBound(brugernavneArr) If rs("foto") = fotoArr(idx) Then isonline = True Exit For End If Next
if isonline then response.write("Online: <img border=""0"" src=""minifotos/" & rs("billedID") & """>") else response.write("Offline: <img border=""0"" src=""minifotos/" & rs("billedID") & """>") end if
Der er ikke noget problem i den kode jeg har vist, currentPage eller pageSize får en værdi i starten af scriptet. Men loop'en du foreslog tidligere skal jo bygges på..
Den løkke indikerer et status forhold på hver enkelt billed. Det er her jeg har brug for at finde det korrekt id
set rs = conn.execute("select * from fotos WHERE godkendt = '1' ORDER BY ID DESC LIMIT "& currentPage &","& pageSize &"")
Jeg kan bare ikke se hvordan du vil kunne loope i 1 recordset og samtidig loope længere nede i response.write? Ved ikke om jeg forklare mig tydeligt nok?
Det her gider jeg ikke, finder hjælp et andet sted. Lukker spg.
Synes godt om
Ny brugerNybegynder
Din løsning...
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.