SQL: Meerdere IDs naar werkelijke waarde

Status
Niet open voor verdere reacties.

Hankieh

Gebruiker
Lid geworden
14 jun 2010
Berichten
37
Hoi

Ik ben bezig MS Access te leren kennen aangezien dit meer in mijn werkveld gebruikt gaat worden.
Ik zocht voor het oefenen een voorbeeld en heb gekozen voor voetbal uitslagen. Maar ik loop vast.

De onderstaande query met het resultaat in de afbeelding lukte nog wel. Hier vraag ik per wedstrijd de datum, de thuis spelende ploeg en de eindstand op. Zoals de bedoeling, toont het resultaat netjes de ploegnaam i.p.v. het ploeg ID.
Code:
SELECT Games.GameDate, Teams.TeamName AS HomeTeam, Teams.TeamName AS AwayTeam, (Games.HomeGoals & "-" & AwayGoals) AS Score
FROM Games 
INNER JOIN Teams ON Games.HomeTeam_ID=Teams.ID;
2gy925d.jpg


Maar hoe voeg ik de uit spelende ploeg hier aan toe?
Ik heb het volgende geprobeerd:
- Als ik in de SELECT regel de uitploeg wil toevoegen krijg je twee keer achter elkaar Teams.TeamName. Wat ook zoals verwacht twee keer de thuisspelende ploeg weergeeft.
- Als ik onder de SQL code INNER JOIN Teams ON Games.AwayTeam_ID=Teams.ID; toevoeg krijg ik een foutmelding: "Syntax error (missing operator) in query 'Games.HomeTeam_ID=Teams.ID INNER JOIN Teams ON Games.AwayTeam_ID=Teams.I'"
- Beide van het bovenstaande geeft dezelfde foutmelding.


Hoe moet ik dit aanpakken?

Alvast bedankt,
Groeten Chris

Bijlage: Access database in zip-bestand Bekijk bijlage Games.zip
 
Dat lukt met deze query:
Code:
SELECT Games.GameDate, Hometeam.TeamName AS HomeTeam, (Games.HomeGoals & "-" & AwayGoals) AS Score, Awayteam.TeamName AS Awayteam
FROM Teams AS Awayteam INNER JOIN (Games INNER JOIN Teams AS Hometeam ON Games.HomeTeam_ID = Hometeam.ID) ON Awayteam.ID = Games.AwayTeam_ID;
 
Het werkt perfect! Bedankt! Had er niet aan gedacht om dezelfde tabel twee keer te openen. Echt slim.

Ik sta wel een beetje te kijken waarom de ene INNER JOIN in de andere INNER JOIN zit. Maar ik moet daar wellicht meer ervaring voor opdoen.

Ik ga lekker verder prutsen. Nogmaals bedankt :)
 
Ik sta wel een beetje te kijken waarom de ene INNER JOIN in de andere INNER JOIN zit.
Dit soort constructies schrijf ik ook (nog steeds) niet uit het hoofd op :). Gelukkig hoeft dat niet, je kunt de complete query grafisch opbouwen. De logica daarentegen kan ik je wel uitleggen: je hebt één tabel voor de teams (terecht overigens) maar per wedstrijd 2 teams nodig. Omdat een team doorgaans niet tegen zichzelf speelt, heb je in de tabel Games 2 teamID's staan. En dus heb je 2 versies van dezelfde tabel nodig om ze te laten zien, elk gekoppeld aan het eigen ID. Je hoeft de tabellen niet te hernoemen, maar in dit geval is dat wel zo handig.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan