Avatar billede cot Nybegynder
06. januar 2008 - 14:49 Der er 11 kommentarer og
1 løsning

order by / group by

Ja, jeg skal have stillet nogle tal op efter hinanden i en tabel, jeg har brugt SUM() til at lægge nogle tal sammen, og nu skal data så sættes op efter summen af dette, kode:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php
$con = mysql_connect("localhost","****","*****");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("******", $con);

$query = "SELECT player, COUNT(vid), SUM(population) FROM x_world GROUP BY SUM(population) DESC";
   
$result = mysql_query($query) or die(mysql_error());

// Print out result

echo "<table border='1'>
<tr>
<th>Spiller</th>
<th>Byer</th>
<th>Indbyggere</th>
</tr>";

while($row = mysql_fetch_array($result))
  {
  echo "<tr>";
  echo "<td>" . $row['player'] . "</td>";
  echo "<td>" . $row['COUNT(vid)'] . "</td>";
  echo "<td>" . $row['SUM(population)'] . "</td>";
 
  echo "</tr>";
  }
echo "</table>";

mysql_close($con);
?>

Jeg får denne fejl melding:
"Invalid use of group function"
Avatar billede dkfire Nybegynder
06. januar 2008 - 15:08 #1
Du skal give dine kolonner med COUNT(vid) og SUM(population) et navn. Dette kan du gøre ved at bruge AS.

$query = "SELECT player, COUNT(vid) AS count_vid, SUM(population) AS sum_pop FROM x_world GROUP BY sum_pop DESC";

Men tror nu nærmere du skal GROUP BY player måske.
Avatar billede cot Nybegynder
06. januar 2008 - 15:20 #2
Det virker ikke, hverken med player eller sum_pop, kan det være andet?
Avatar billede dkfire Nybegynder
06. januar 2008 - 15:34 #3
Ja du skal ikke have DESC til sidst.
Avatar billede cot Nybegynder
06. januar 2008 - 15:44 #4
Den  viser det her:
http://traviannews.dk/sta.php
Avatar billede dkfire Nybegynder
06. januar 2008 - 15:48 #5
Ja og ???

Du skal jo også rette:
echo "<tr>";
  echo "<td>" . $row['player'] . "</td>";
  echo "<td>" . $row['COUNT(vid)'] . "</td>";
  echo "<td>" . $row['SUM(population)'] . "</td>";

  echo "</tr>";

så det passer til de kolonner som du henter.
Avatar billede cot Nybegynder
06. januar 2008 - 15:50 #6
Har jeg så gjort nu, men det gør jo ingen forskel fra det jeg havde før, det jeg vil er at stille det op så den højeste population står øverst, men det gør den ikke. den siger at den ikke kan group by sum_pop...
Avatar billede cot Nybegynder
06. januar 2008 - 15:51 #7
$query = "SELECT player, COUNT(vid) AS count_vid, SUM(population) AS sum_pop FROM x_world GROUP BY player";
   
$result = mysql_query($query) or die(mysql_error());

// Print out result

echo "<table border='1'>
<tr>
<th>Spiller</th>
<th>Byer</th>
<th>Indbyggere</th>
</tr>";

while($row = mysql_fetch_array($result))
  {
  echo "<tr>";
  echo "<td>" . $row['player'] . "</td>";
  echo "<td>" . $row['count_vid'] . "</td>";
  echo "<td>" . $row['sum_pop'] . "</td>";
 
  echo "</tr>";
  }
echo "</table>";

mysql_close($con);
?>
Avatar billede dkfire Nybegynder
06. januar 2008 - 15:59 #8
GROUP BY sortere ikke dine resultater, men gruppere dem.
ORDER BY sortere dine resultater.

$query = "SELECT player, COUNT(vid) AS count_vid, SUM(population) AS sum_pop FROM x_world GROUP BY player ORDER BY sum_pop DESC";
Avatar billede cot Nybegynder
06. januar 2008 - 16:19 #9
TAK, det virker, smid et svar...
Avatar billede dkfire Nybegynder
06. januar 2008 - 16:25 #10
Godt.
Et svar :-)
Avatar billede dkfire Nybegynder
06. januar 2008 - 16:26 #11
Og som et svar ;-)
Avatar billede cot Nybegynder
06. januar 2008 - 16:31 #12
HEHE
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