Ik heb een probleem. Mijn kennis van SQL is niet toereikend voor het volgende probleem. Het lijkt erg simpel, maar wanneer ik m'n code ga bouwen, valt het toch erg tegen.
Omschrijving van de situatie:
Het probleem omvat een competitiemanager. In competities zitten teams, deze hebben wedstrijden. (
) En deze wedstrijden bestaan ook weer uit meerdere subwedstrijden.
Alle wedstrijden staan van tevoren in het systeem, subwedstrijden worden aangemaakt als de wedstrijd is gespeeld, en dus de uitslag bekend is.
Nu wil ik de laatste uitslag per team displayen, gesorteerd op datum.
Er zijn tabellen:
Sorry voor het gekloot met zowel Nederlandse als Engelse termen.
Deze SQL geeft alle uitslagen per team, hoe kan ik zorgen dat dat alleen de laatste is per team?
(LIMIT 1 op het einde werkt natuurlijk niet.)
Omschrijving van de situatie:
Het probleem omvat een competitiemanager. In competities zitten teams, deze hebben wedstrijden. (
Alle wedstrijden staan van tevoren in het systeem, subwedstrijden worden aangemaakt als de wedstrijd is gespeeld, en dus de uitslag bekend is.
Nu wil ik de laatste uitslag per team displayen, gesorteerd op datum.
Er zijn tabellen:
- teams
- wedstrijden, gelinkt aan teams (teams.id = wedstrijden.team)
- subwedstrijden, gelinkt aan teams (wedstrijden.id = subwedstrijden.team_match)
- Er bestaan subwedstrijden voor de wedstrijd (geeft aan dat de wedstrijd is gespeeld)
- Eén wedstrijd, met de hoogste datum, per team
- Gesorteerd op datum, aflopend
SQL:
1
2
3
4
5
| SELECT teams.textname AS team, wedstrijden.id AS id, wedstrijden.datum AS datum, wedstrijden.opponent AS opponent, wedstrijden.home AS home, count(subwedstrijden.id) AS submatches, sum(won) AS won FROM wedstrijden, subwedstrijden, teams WHERE wedstrijden.id = subwedstrijden.team_match AND wedstrijden.team = teams.id GROUP BY wedstrijden.id ORDER BY wedstrijden.datum DESC |
Sorry voor het gekloot met zowel Nederlandse als Engelse termen.
Deze SQL geeft alle uitslagen per team, hoe kan ik zorgen dat dat alleen de laatste is per team?