aantal uitslagen per jaar

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Roland Braat

Roland Braat

15/10/2008 17:59:00
Quote Anchor link
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?
$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>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? echo $row['datum'] ?>
</td>
<td>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? echo $row['uitslag'] ?>
</td>
</tr>
</table>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?
}
?>


Ik hoop dat jullie mijn bedoeling snappen
 
PHP hulp

PHP hulp

20/11/2024 08:22:10
 
Emmanuel Delay

Emmanuel Delay

15/10/2008 21:40:00
Quote Anchor link
Probeer eens
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
SELECT YEAR(datum) AS jaar, COUNT(uitslag) AS uitslag
FROM wedstrijden
GROUP BY jaar
ORDER BY jaar DESC;
 
Kristoff

kristoff

15/10/2008 21:43:00
Quote Anchor link
je moet bij je where nog een parameter bij zetten voor de datums er tussen


dus
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?
    $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.
 
Emmanuel Delay

Emmanuel Delay

15/10/2008 21:47:00
Quote Anchor link
Sorry, ik bedoel

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
SELECT YEAR(datum) AS jaar, COUNT(uitslag) AS aantal, uitslag
FROM wedstrijden
WHERE uitslag=1
GROUP BY jaar
ORDER BY jaar DESC;
Gewijzigd op 01/01/1970 01:00:00 door Emmanuel Delay
 
Ano Niem

Ano Niem

15/10/2008 21:47:00
Quote Anchor link
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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
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.
 
Emmanuel Delay

Emmanuel Delay

15/10/2008 21:50:00
Quote Anchor link
Het laatste wat ik schrteef werkt. Ik weet niet of je het eerder over mijn eerste post had, maar de GROUP BY werkt wel.
 
Ano Niem

Ano Niem

15/10/2008 21:56:00
Quote Anchor link
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
 
Emmanuel Delay

Emmanuel Delay

15/10/2008 21:58:00
Quote Anchor link
My thoughts exactly. :)
 
Roland Braat

Roland Braat

16/10/2008 07:11:00
Quote Anchor link
Ik heb nu dit
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?$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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?
"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
Gewijzigd op 01/01/1970 01:00:00 door Roland Braat
 
Joren de Wit

Joren de Wit

16/10/2008 09:14:00
Quote Anchor link
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().
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.