de eerste 2 winnaars tonen
id - id_wedstrijd - score
Inhoud van tabel is,
1 - 3 - 1 (dus wedstrijd 3 = 1 punt)
2 - 6 - 2 (wedstrijd 6 = 2 punten)
3 - 3 - 2 (wedstrijd 3 = 2 punten)
4 - 4 - 1 (wedstrijd 4 = 1 punt)
5 - 4 - 1 (wedstrijd 4 = 1 punt)
6 - 6 - 1 (wedstrijd 6 = 1 punt)
Wedstrijd 3 heeft dus 3 punten in totaal
Wedstrijd 6 heeft 3 punten
Wedstrijd 4 heeft 2 punten
Ik wil deze rekensom op de site tonen
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
// STAP 1 : id's van wedstrijden ophalen
$aQuery = "SELECT id FROM wedstrijd";
$result = mysql_query($aQuery);
// STAP 2 : id's wedstrijden vergelijken met puntenscore
while ($wedstrijd = mysql_fetch_array($result)) {
$bQuery = "SELECT SUM(score) as kampioen
FROM punten
WHERE id_wedstrijd = '" . $wedstrijd['id'] . "'";
$result = mysql_query($bQuery);
// STAP 3 : de 3 kampioenen laten zien
while ($ranglijst = mysql_fetch_array($result)) {
echo $ranglijst['kampioen'] . " ";
}
}
?>
// STAP 1 : id's van wedstrijden ophalen
$aQuery = "SELECT id FROM wedstrijd";
$result = mysql_query($aQuery);
// STAP 2 : id's wedstrijden vergelijken met puntenscore
while ($wedstrijd = mysql_fetch_array($result)) {
$bQuery = "SELECT SUM(score) as kampioen
FROM punten
WHERE id_wedstrijd = '" . $wedstrijd['id'] . "'";
$result = mysql_query($bQuery);
// STAP 3 : de 3 kampioenen laten zien
while ($ranglijst = mysql_fetch_array($result)) {
echo $ranglijst['kampioen'] . " ";
}
}
?>
Uitkomst is 3 3 2
Nu wil ik alleen de punten van de eerste 2 winnaars laten zien. Dus 3 3
Onderstaande werkt uiteraard niet omdat hij in een loop zit.
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
$bQuery = "SELECT SUM(score) as kampioen
FROM punten
WHERE id_wedstrijd = '" . $wedstrijd['id'] . "'
ORDER BY id_wedstrijd ASC LIMIT 2";
?>
$bQuery = "SELECT SUM(score) as kampioen
FROM punten
WHERE id_wedstrijd = '" . $wedstrijd['id'] . "'
ORDER BY id_wedstrijd ASC LIMIT 2";
?>
Maar hoe krijg ik het wel werkend?
En bij de where clause zet ik ook zo mijn vraagtekens, wat doet dat in de punten tabel, een wedstrijd_id kwa naamgeving zal dan uniek zijn en dus zul je maar 1 record terugkrijgen in mijn intrepetatie dan.
Waarvoor is $aQuery? Zie het nut er niet van in.
Karl Karl op 16/11/2010 18:50:18:
Ik denk dat je datamodel ook niet helemaal correct is, maar goed, dat kan ik hier natuurlijk niet helemaal aan zien.
Oplossing: Query buiten de loop halen.Nee, de zooi klopt gewoon niet.
Waarvoor is $aQuery? Zie het nut er niet van in.
Waarvoor is $aQuery? Zie het nut er niet van in.
$aQuery haalt gegevens uit tabel wedstrijd
Daar staan alle wedstrijden
$bQuery haalt alle gegevens uit tabel punten
Daar staan alle punten in vermeld. Met id van wedstrijd - id_wedstrijd
Toevoeging op 16/11/2010 19:40:42:
Noppes Homeland op 16/11/2010 18:49:08:
Denk zelf even na, degene met de meeste punten die werkt in vele gevallen, dus sorteren op een wedstrijd_id is dan geheel niet van toepassing
En bij de where clause zet ik ook zo mijn vraagtekens, wat doet dat in de punten tabel, een wedstrijd_id kwa naamgeving zal dan uniek zijn en dus zul je maar 1 record terugkrijgen in mijn intrepetatie dan.
En bij de where clause zet ik ook zo mijn vraagtekens, wat doet dat in de punten tabel, een wedstrijd_id kwa naamgeving zal dan uniek zijn en dus zul je maar 1 record terugkrijgen in mijn intrepetatie dan.
Ik krijg 3 records terug - 3 3 2
Maar eerst zou ik als ik jou was eens normaliseren.
Karl Karl op 16/11/2010 20:02:02:
Kijk eens naar joins.
Maar eerst zou ik als ik jou was eens normaliseren.
Maar eerst zou ik als ik jou was eens normaliseren.
Een ieder kan punten geven aan een wedstrijd.
persoon 1 geeft 4 pnt aan wedstrijd 3
persoon 2 geeft 2 pnt aan wedstrijd 6
etc. etc.
Deze punten heb ik in een aparte tabel staan
De bedoeling is dus eerst de wedstrijd ID te selecteren
En dan punten optellen die gekoppeld zijn aan wedstrijd ID
en vervolgens de 2 hoogste scores tonen.
Ik weet niet hoe ik dit met normaliseren.
het wedstrijd_id met het gesommeerd aantal punten?
Patrick Baldo op 16/11/2010 20:25:04:
Een ieder kan punten geven aan een wedstrijd.
persoon 1 geeft 4 pnt aan wedstrijd 3
persoon 2 geeft 2 pnt aan wedstrijd 6
etc. etc.
Deze punten heb ik in een aparte tabel staan
De bedoeling is dus eerst de wedstrijd ID te selecteren
En dan punten optellen die gekoppeld zijn aan wedstrijd ID
en vervolgens de 2 hoogste scores tonen.
Ik weet niet hoe ik dit met normaliseren.
Karl Karl op 16/11/2010 20:02:02:
Kijk eens naar joins.
Maar eerst zou ik als ik jou was eens normaliseren.
Maar eerst zou ik als ik jou was eens normaliseren.
Een ieder kan punten geven aan een wedstrijd.
persoon 1 geeft 4 pnt aan wedstrijd 3
persoon 2 geeft 2 pnt aan wedstrijd 6
etc. etc.
Deze punten heb ik in een aparte tabel staan
De bedoeling is dus eerst de wedstrijd ID te selecteren
En dan punten optellen die gekoppeld zijn aan wedstrijd ID
en vervolgens de 2 hoogste scores tonen.
Ik weet niet hoe ik dit met normaliseren.
Dit is niet in overeenstemming met je datamodel.
Noppes Homeland op 16/11/2010 20:40:21:
Dus wat wil je nu eigenlijk zien als resultaat?
het wedstrijd_id met het gesommeerd aantal punten?
het wedstrijd_id met het gesommeerd aantal punten?
Dat is me gelukt met bovenstaande code.
Alleen krijg ik de opgetelde punten van alle wedstrijden.
En ik wil 2 wedstrijden met de meeste punten.
En voortaan wel eerst inlezen op het SQL onderwerp, dan hoef je namenlijk dit soort zaken ook niet te vragen.
http://www.w3schools.com/sql/sql_groupby.asp