Toon posts:

[SQL] Meerdere id's koppelen in 1 query

Pagina: 1
Acties:
  • 435 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Beetje vage titel misschien maar het gaat om het volgende:

Ik heb 2 tabellen:
- CompetitieWedstrijden: met o.a ThuisTeamID en UitTeamID
- CompetitieTeams: met o.a TeamID en naam

ik wil van ThuisTeamID en UitTeamID de namen selecteren in een SELECT query.
Eén ID koppelen met een andere tabel lukt me wel, maar krijg twee ID's koppelen niet voor elkaar.

Deze query gebruik ik om de naam van thuisTeam te krijgen
SQL:
1
SELECT CompetitieWedstrijden.*, CompetitieTeams.naam as team1, * FROM CompetitieWedstrijden INNER JOIN CompetitieTeams ON CompetitieWedstrijden.thuisTeamID = CompetitieTegenstanders.teamID"

Ik wil nu de naam van uitTeam ook erbij krijgen als team2. Iemand ideeën?

  • whoami
  • Registratie: December 2000
  • Laatst online: 17:15
Je kunt een alias gebruiken.
Je geeft de oplossing eigenlijk zelf al in je laatste lijntje....

code:
1
2
3
4
select ...
FROM competitiewedstrijden
inner join competitieTeams AS team1 ON ...
inner join competitieTeams AS team2 ON ....

Let er dan wel op dat je in jouw query die alias overal moet gebruiken ipv de echte tabelnaam.

https://fgheysels.github.io/


Verwijderd

Topicstarter
whoami schreef op zaterdag 21 mei 2005 @ 17:05:
Je kunt een alias gebruiken.
Je geeft de oplossing eigenlijk zelf al in je laatste lijntje....

code:
1
2
3
4
select ...
FROM competitiewedstrijden
inner join competitieTeams AS team1 ON ...
inner join competitieTeams AS team2 ON ....

Let er dan wel op dat je in jouw query die alias overal moet gebruiken ipv de echte tabelnaam.
Bedoel je zoiets?
code:
1
2
3
SELECT CompetitieWedstrijden.*, team1.naam, team2.naam FROM CompetitieWedstrijden 
INNER JOIN CompetitieTeams as team1 ON (CompetitieWedstrijden.thuisTeamID = team1.TeamID) 
INNER JOIN CompetitieTeams as team2 ON (CompetitieWedstrijden.uitTeamID = team2.TeamID)

Ik krijg dan deze foutmelding:
code:
1
Syntaxisfout (operator ontbreekt) in query-expressie (CompetitieWedstrijden.thuisTeamID = team1.TeamID) INNER JOIN ... team2.TeamID)

  • whoami
  • Registratie: December 2000
  • Laatst online: 17:15
Welke database gebruik je ?
Laat die haakjes trouwens een weg.

[ Voor 40% gewijzigd door whoami op 21-05-2005 17:25 ]

https://fgheysels.github.io/


Verwijderd

Topicstarter
whoami schreef op zaterdag 21 mei 2005 @ 17:23:
Welke database gebruik je ?
Laat die haakjes trouwens een weg.
Zonder haakjes zelfde foutmelding.
Ik gebruik MS Access

  • whoami
  • Registratie: December 2000
  • Laatst online: 17:15
Ah, dan hou ik m'n handen er vanaf. Access zuigt imho zwaar bij dergelijke queries. In SQL Server moet dit echter wel gewoon werken.
Wat je wel kunt doen om het werkend te krijgen (zelfde principe, maar andere methode):
ipv de SQL direct zelf te schrijven, laat je Access die query 'genereren'. Ga in Access naar het query design view, en sleep jouw competitie table daarop, en 2x de teams table. Hij zal wel zelf de query genereren zodanig dat die dubbele join naar dezelfde tabel op de goede manier gaat. (Je zult misschien wel zelf nog ff moeten aangeven op welke velden er nu moeten gejoined worden).

https://fgheysels.github.io/


Verwijderd

select wedstrijd.kolom, thuis.naam, uit.naam
from CompetitieWedstrijden wedstrijd,
competitieTeams thuis,
competitieTeams uit,
where wedstrijd.ThuisTeamID = thuis.teamID
and wedstrijd.UitTeamID = uit.TeamID

ongeveer

Verwijderd

Topicstarter
whoami schreef op zaterdag 21 mei 2005 @ 17:38:
[...]


Ah, dan hou ik m'n handen er vanaf. Access zuigt imho zwaar bij dergelijke queries. In SQL Server moet dit echter wel gewoon werken.
Wat je wel kunt doen om het werkend te krijgen (zelfde principe, maar andere methode):
ipv de SQL direct zelf te schrijven, laat je Access die query 'genereren'. Ga in Access naar het query design view, en sleep jouw competitie table daarop, en 2x de teams table. Hij zal wel zelf de query genereren zodanig dat die dubbele join naar dezelfde tabel op de goede manier gaat. (Je zult misschien wel zelf nog ff moeten aangeven op welke velden er nu moeten gejoined worden).
Ik heb hem door Access laten genereren, wist hiervoor niet dat dat kon. Was een beetje met haakjes spelen dus. Dit is hem geworden:

code:
1
2
3
4
SELECT CompetitieWedstrijden.*, thuis.naam as team1, uit.naam as team2
FROM (CompetitieWedstrijden 
INNER JOIN CompetitieTeams AS uit ON CompetitieWedstrijden.uitTeamID = uit.teamID) 
INNER JOIN CompetitieTeams as thuis ON CompetitieWedstrijden.thuisTeamID = thuis.teamID

Verwijderd

Wat ook _heel_ fijn is, is dat in Access met haakjes moet gaan werken als je meerdere JOIN's maakt |:(

Als je dat niet weet ben je heel lang aan het zoeken heb ik gemerkt :)

  • pjonk
  • Registratie: November 2000
  • Laatst online: 29-12-2025

It’s nice to be important but it’s more important to be nice

Pagina: 1