Gebruik van meerdere tabellen bij ORDER BY

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Igor

Igor

07/07/2009 22:30:00
Quote Anchor link
Hallo allemaal,

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
 
PHP hulp

PHP hulp

22/11/2024 04:51:01
 
Rens nvt

Rens nvt

07/07/2009 22:39:00
Quote Anchor link
Gebruik hiervoor een subquery, bijv:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
 
Igor

Igor

07/07/2009 22:41:00
Quote Anchor link
SELECT COUNT(*) AS aantal_doelpunten WHERE team = "1")

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
 
Ben

Ben

07/07/2009 23:17:00
Quote Anchor link
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 ;)

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 :)
 
Rens nvt

Rens nvt

07/07/2009 23:20:00
Quote Anchor link
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
 
Igor

Igor

07/07/2009 23:21:00
Quote Anchor link
Het leek mij zo omslachig om via de spelers achter het team te komen waarbij een doelpunt is gescoord ;)

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'
 



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.