07. oktober 2004 - 18:59Der er
10 kommentarer og 1 løsning
Tælling af antal poster, COUNT og evt. GROUP BY?
Jeg vil gerne have antal tilmeldinger, og har forsøgt mig med:
$result = mysql_query("SELECT COUNT(t.id_tilmeldinger) AS number, t.tilmeldings_tidspunkt, t.id_hold, h.id_hold FROM tilmeldinger AS t, hold AS h WHERE h.id_hold = t.id_hold GROUP BY t.id_tilmeldinger ");
$row = mysql_fetch_array($result);
echo "Antal: " . $row['0'] . ". ";
Men den giver resultatet 1 - og uden GROUP BY melder den fejl. Vanskeligere end jeg troede at tælle! Hvad er der galt?
$result = mysql_query("SELECT COUNT(t.id_tilmeldinger) AS number, t.tilmeldings_tidspunkt, t.id_hold, h.id_hold FROM tilmeldinger AS t, hold AS h WHERE h.id_hold = t.id_hold GROUP BY t.tilmeldings_tidspunkt, t.id_hold ");
Det virker heller ikke, resultatet er stadig 1, mens den her giver det rigtige antal (som er meget større): $antal = mysql_result(mysql_query("SELECT COUNT(id_tilmeldinger) FROM tilmeldinger WHERE tilmeldings_tidspunkt > '0308240000' "),0);
Jeg ville bare have hensynet til h.id_hold = t.id_hold med ind i optællingen (giver lidt færre), men kan som sagt ikke se, hvorfor både min oprindelige og forslaget fra arne v kun giver 1.
$result = mysql_query("SELECT COUNT(t.id_tilmeldinger) AS number, t.tilmeldings_tidspunkt, t.id_hold, h.id_hold FROM tilmeldinger AS t, hold AS h WHERE h.id_hold = t.id_hold GROUP BY t.id_hold ");
Hvis man kun tæller på tilmeldinger kommer de frem, men der er slettet nogle hold efter tilmeldingerne er kommet, så h.id_hold = t.id_hold skal sikre, at der tælles kun på tilmeldinger til hold, som faktisk eksisterer nu!
Men desværre, dit sidste forslag giver også kun 1. Jeg må have læst på det med Group by...
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.