Avatar billede dogg Nybegynder
10. november 2003 - 20:44 Der er 25 kommentarer og
1 løsning

Group by i MySql

Hej!

Jeg har en masse poster i en MySQL-database. Alle dem har et felt med et tal. Jeg skal så have en liste med de 10 tal der fremkommer mest i tabellen. Mener at man gør det med noget group by, men kan ikke helt hitte koden...

Nogen der kan hjælpe?

På forhånd tak!

Niels
Avatar billede erikjacobsen Ekspert
10. november 2003 - 20:47 #1
select ditfelt,count(*) as antal from dintabel group by ditfelt order by antal desc limit 0,10
Avatar billede dogg Nybegynder
10. november 2003 - 20:53 #2
den returnerer en helt forkert værdi.... det ser ud til at være antallet af poster i tabellen
Avatar billede erikjacobsen Ekspert
10. november 2003 - 20:54 #3
Nej. Hvad skriver du?
Avatar billede dogg Nybegynder
10. november 2003 - 20:54 #4
og det er kun ét tal
Avatar billede dogg Nybegynder
10. november 2003 - 20:54 #5
set rs = Conn.Execute("select land,count(*) as antal from brugere group by land order by antal desc limit 0,10")
Response.Write "Top 10 member countries (Country of origin)<br>"
Do until rs.EOF or rs.BOF
Response.Write "<img src=""images/flag/" & rs("Antal") & ".gif"" border=""0"">"
rs.movenext
loop
rs.close
set rs = nothing
Avatar billede erikjacobsen Ekspert
10. november 2003 - 21:05 #6
Ja, den sql-sætning skal give det rigtige resultat.
Avatar billede dogg Nybegynder
10. november 2003 - 21:09 #7
den skriver bare 3??
Avatar billede dogg Nybegynder
10. november 2003 - 21:09 #8
altså rs("antal") er 3
Avatar billede erikjacobsen Ekspert
10. november 2003 - 21:10 #9
Ja, 3 er et godt tal. Hvad står der i din tabel?
Avatar billede dogg Nybegynder
10. november 2003 - 21:13 #10
der er kun 3 poster i tabellen indtil videre. Kan det have noget med det at gøre??
Avatar billede erikjacobsen Ekspert
10. november 2003 - 21:13 #11
Formentlig. Hvad står der i din tabel?
Avatar billede dogg Nybegynder
10. november 2003 - 21:16 #12
land er et tal-felt
Avatar billede erikjacobsen Ekspert
10. november 2003 - 21:23 #13
Hvad står der i din tabel?
Avatar billede dogg Nybegynder
10. november 2003 - 21:23 #14
jeg forstår ikke helt hvad du mener?? :( ... pinligt :)
Avatar billede erikjacobsen Ekspert
10. november 2003 - 21:26 #15
Åbenbart ikke. Vi glemmer det bare, ik'?
Avatar billede dogg Nybegynder
10. november 2003 - 21:26 #16
når hvis du mener værdien af land i de tre poster så er det 2 ved alle tre
Avatar billede eagleeye Praktikant
10. november 2003 - 22:37 #17
så gør den jo også det rigtige..
Nu har jeg lært 3 = masse
Avatar billede eagleeye Praktikant
10. november 2003 - 22:39 #18
eller er det 2 tallet det skal stå der?
Avatar billede dogg Nybegynder
10. november 2003 - 22:40 #19
den gør ikke det jeg gerne vil have den til ... :( Den skal skrive de ti lande hvor der er flest medlemmer fra. Hvad er tallet 3 så et udtryk for når den udskriver det???
Avatar billede dogg Nybegynder
10. november 2003 - 22:44 #20
den burde jo udskrive 2...
Avatar billede eagleeye Praktikant
10. november 2003 - 22:50 #21
Du har jo selv lavet koden og skrevet:  rs("Antal")  hvor du udskriver så du får et gæt hvad de 3 er ;) og hvad du skal skrive i stedet for Antal når du kigger på din SQL sætning igen..:

select land,count(*) as antal from ...
Avatar billede eagleeye Praktikant
10. november 2003 - 22:52 #22
as betyder alias og gør at count(*) kan refereres som "antal" i et recordset presis som man kan udskrive en kolonne.
Avatar billede dogg Nybegynder
10. november 2003 - 22:54 #23
ok, dumt spg :) Men hvordan får jeg så løst mit problem??? Jeg er helt på herrens mark :)
Avatar billede eagleeye Praktikant
10. november 2003 - 22:56 #24
;)
Count(*) tæller et antal records og når du har Group by vil den tælle et antal for hver "gruppe". Og du udskriver 3 fordi der netop er 3 record med værdien 2 i land. For at udskrive landet skriver du bare kolonne "land" og ikke "Antal" ud i dit loop.


rs("Antal") ---> rs("land")
Avatar billede dogg Nybegynder
10. november 2003 - 23:04 #25
ja, selvfølgelig :) Tusinde tak! Havde fået stirret mig blind på det :) Smid et svar og få dine velfortjente point!
Avatar billede eagleeye Praktikant
11. november 2003 - 00:07 #26
Hvad med erikjacobsen han gav dig SQL sætningen?
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester