Hey,
In mijn database heb ik o.a een veld datum (date) en een vel uitslag.
Nu wil ik dat er gekeken word hoe vaak er een bepaalde uitslag(in dit geval nummer 1) per jaar voorkomt. en dat ook getoond word.
hoe doe ik dat?
Voorbeeld:
overwinningen in 2008: 12x
overwinningen in 2007: 8x
overwinningen in 2006: 15x
Ik dacht iets met count maar weet het niet.
Dit is mijn code tot nu toe:
<?
$query =
"SELECT datum, COUNT(`uitslag`) AS uitslag FROM wedstrijden
WHERE uitslag=1
GROUP BY datum
ORDER BY datum DESC";
$result = mysql_query($query) or die(mysql_error());
while ($row = mysql_fetch_assoc($result))
{
?>
<table>
<tr>
<td><? echo $row['datum'] ?></td>
<td><? echo $row['uitslag'] ?></td>
</tr>
</table>
<?
}
?>

Ik hoop dat jullie mijn bedoeling snappen
Probeer eens

SELECT YEAR(datum) AS jaar, COUNT(uitslag) AS uitslag
FROM wedstrijden
GROUP BY jaar
ORDER BY jaar DESC;
je moet bij je where nog een parameter bij zetten voor de datums er tussen


dus

<?
    $query = 
    "SELECT datum, COUNT(`uitslag`) AS uitslag FROM wedstrijden
    WHERE uitslag=1 AND datum >= "2008-1-1" AND datum <= "2008-12-31"
    GROUP BY datum
        ORDER BY datum DESC";


?>


Als je meerdere jaren wilt weten moet je meerdere keren die query uitvoeren.
Sorry, ik bedoel

SELECT YEAR(datum) AS jaar, COUNT(uitslag) AS aantal, uitslag
FROM wedstrijden
WHERE uitslag=1
GROUP BY jaar
ORDER BY jaar DESC;
Emmanuel, het DBMS voert de SELECT pas als laatste uit. Dus ik betwijfel of je jaar kunt gebruiken in je GROUP BY.

Een mogelijk andere oplossing:

SELECT YEAR(datum) Jaar, COUNT(uitslag) 
FROM wedstrijden
GROUP BY YEAR(datum) 
ORDER BY YEAR(datum);


Een DBMS selecteerd eerst alles uit de tabellen, filtert vervolgens a.d.h.v. WHERE, groepeert hierna volgens de GROUP BY, filtert vervolgens op HAVING, sorteert volgens ORDER BY voert de LIMIT uit en uit dat resultaat worden pas de kolommen geselecteerd.
Het laatste wat ik schrteef werkt. Ik weet niet of je het eerder over mijn eerste post had, maar de GROUP BY werkt wel.
Oké heb ik ook weer wat geleerd :)

Volgens wat ik geleerd heb zou het niet werken namelijk, echter als het in de praktijk werkt boeit de theorie niet meer toch? :P
Ik heb nu dit
<?$query = "SELECT YEAR(datum) AS jaar, COUNT(uitslag) AS aantal, uitslag
FROM wedstrijden
WHERE uitslag=1
GROUP BY jaar
ORDER BY jaar DESC";?>
En deze werkt alleen hij telt de aantal nummer 1 niet.
Hoe moet ik dat oplossen

EDIT:
<?
"SELECT YEAR(datum) AS jaar, COUNT(uitslag), SUM(uitslag) AS totaal, uitslag
FROM wedstrijden
WHERE uitslag=1
GROUP BY jaar
ORDER BY jaar DESC";
?>
zo werkt het thx
Voor een volledig correcte query zou je ook nog moeten groeperen op de kolom uitslag. Het zal in dit geval voor het resultaat geen verschil maken, maar in een GROUP BY hoor je nu eenmaal alle kolommen op te nemen die in de SELECT staan en geen onderdeel zijn van een verzamelingsfuncties zoals COUNT() of SUM().

Reageren