Avatar billede gil-galad Nybegynder
02. maj 2009 - 22:26 Der er 9 kommentarer og
1 løsning

Finde mest forekommende ord i række

Hej

Jeg har en række i min mysql database der indeholder en række lande. Det jeg vil lave er en top 3 liste over de lande der forekommer flest gange.

Jeg ved ikke helt hvordan jeg skal gribe dette an, om man evt kan lave det i sql forespørgelsen eller skal igang med php?
Avatar billede arne_v Ekspert
02. maj 2009 - 23:13 #1
Hvis vi nu antager at det er en kolonne med lande og ikke en række, så:

SELECT land,COUNT(*) AS n FROM dintabel ORDER BY COUNT(*) DESC LIMIT 3
Avatar billede gil-galad Nybegynder
02. maj 2009 - 23:31 #2
Tak for svaret.

Jeg prøver at skrive det ud således:

$query_lande_top = mysql_query("SELECT land,COUNT(*) AS n FROM data ORDER BY COUNT(*) DESC LIMIT 3 ");
while($row = mysql_fetch_array($query_lande_top)){
  echo $row['land'];
}

men får:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in:.....


Hvad gør jeg galt? (kolonnen hedder 'land' og tabellen 'data')
Avatar billede arne_v Ekspert
02. maj 2009 - 23:48 #3
$query_lande_top = mysql_query("SELECT land,COUNT(*) AS n FROM data ORDER BY COUNT(*) DESC LIMIT 3 ") or die(mysql_error());

vil fortælle dig hvad problemet er.
Avatar billede arne_v Ekspert
02. maj 2009 - 23:48 #4
Jeg har glemt GROUP BY ....

SELECT land,COUNT(*) AS n FROM dintabel GROUP BY land ORDER BY COUNT(*) DESC LIMIT 3
Avatar billede gil-galad Nybegynder
03. maj 2009 - 22:44 #5
Dette virker perfekt:
$query_lande_top = mysql_query("SELECT land,COUNT(*) AS n FROM data GROUP BY land ORDER BY COUNT(*) DESC LIMIT 3") or die(mysql_error());
while($row = mysql_fetch_array($query_lande_top)){
  echo $row['land']."<br>";
}



lige et sidste spørgsmål:
Er der en måde hvorpå jeg kan se hvor mange gange hvert land så er forekommende i kolonnen?

Fx:

1: Danmark (200)
2: Polen (170)
3: Congo (12)


eller lign?
Avatar billede arne_v Ekspert
03. maj 2009 - 22:50 #6
echo $row['land']." " . $row['n']."<br>";
Avatar billede arne_v Ekspert
03. maj 2009 - 22:51 #7
Vi valgte n som alias for COUNT(*)
Avatar billede gil-galad Nybegynder
03. maj 2009 - 23:15 #8
Tak skal du have!

Smider du et svar?
Avatar billede arne_v Ekspert
03. maj 2009 - 23:26 #9
kommer her
Avatar billede gil-galad Nybegynder
04. maj 2009 - 18:32 #10
Tak!
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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