Gebruik van meerdere tabellen bij ORDER BY
Ik zit met een vraag.
Eerst schets ik even de situatie:
Ik heb twee tabellen:
1:
tabelnaam: teams
velden: id, naam, punten
2:
tabelnaam: doelpunten
velden: id, team, speler
Wat ik nu wil is dat hij een lijst van de teams weergeeft, geordend op 'punten'.
Dat doe ik nu met de query:
SELECT * FROM teams ORDER BY punten
Maar, als twee teams hetzelfde aantal punten hebben, moet hij die twee sorteren op welk team de meeste doelpunten heeft gemaakt. Hij moet dus uit de tabel 'doelpunten' tellen in hoeveel rijen de kolom 'team' de waarde heeft van het team dat op dat moment aan de beurt is.
Ik weet hoe ik het aantal doelpunten van een team kan ophalen
SELECT COUNT(*) AS aantal_doelpunten WHERE team = "1"
Maar ik weet niet hoe dit in een order by moet plaatsen...
Dus nog even in het kort:
Ik wil één query hebben die een lijst van de teams weergeeft, gesorteerd op het aantal punten, en als het aantal punten hetzelfde is, gesorteerd op het aantal doelpunten van dat team.
Ik hoop dat ik het zo duidelijk mogelijk heb uitgelegd en dat jullie mij willen helpen.
Alvast bedankt.
Groet
Igor
Code (php)
1
SELECT id, naam, punten, (SELECT COUNT(*) FROM doelpunten WHERE doelpunten.team = teams.id) AS aantal_doelpunten FROM teams ORDER BY punten DESC, aantal_doelpunten DESC
VV : was copy paste foutje, let op, is query uit losse pols, maar volgens mij klopt ie wel redelijk
Gewijzigd op 01/01/1970 01:00:00 door Rens nvt
Die "1" die had neergezet was even als voorbeeld.
Dat moet hij voor elk team doen. Dus van elk team dat hij aan het ophalen is in de 'hoofdquery' moet hij bepalen hoeveel doelpunten dat team heeft gemaakt...
edit:
Het werkt! Super bedankt :D
Gewijzigd op 01/01/1970 01:00:00 door Igor
Je tabel 'doelpunt' voorzie je dan van een relatie op het veld 'speler' met het veld 'id' in de tabel 'speler'.
Opmerking: tabellen zijn entiteiten, en volgens de regels dienen entiteitnamen als zelfstandige naamwoorden gekozen te worden. Over het algemeen genomen dus in enkelvoud. Ik weet het, het is muggenziften, maar beter goed aangeleerd dan slecht toegepast :)
Ben schreef op 07.07.2009 23:17:
Waarom neem je eigenlijk een veld 'team' op in je doelpunten-tabel? Als het goed is kan 1 speler maar bij 1 team tegelijk spelen. Dus kun je via de speler id's weer terughalen hoeveel doelpunten een bepaald team gemaakt heeft. Dit vereist uiteraard wel dat je ook een tabel 'speler' opneemt. Dat maakt het iets netter genormaliseerd ;)
En wat dan met alle doelpunten van Ronaldo die hij voor Manchester maakte??? Gaan die nu over naar Real??? ;p
Wat betreft de enkelvoudige zelfstandige naamwoorden:
Nou én ;)
'Selecteer uit de teams het team met id 5'
klinkt naar mijn mening logischer dan
'Selecteer uit de team het team met id 5'