2009-12-17 8 views
7

J'ai 2 tables dont j'ai besoin pour obtenir des informations, et je voudrais obtenir les informations en une seule requête.MySQL - JOIN 2 tables avec 2 ID en commun

La situation est la suivante:

table "matches" : 

id 
team_A_id 
team_B_id 

table "teams" : 

id 
name 

L'objectif est de récupérer des informations de table "correspondances" (matches de football) et rejoindre l'information avec la table "équipes". J'en ai besoin car mon fournisseur de service web n'a pas les données xml dans ma langue (portugais), et je dois donc offrir à mon client la possibilité de traduire certains noms d'équipes en portugais, sinon j'ajouterais les noms des équipes directement sur le "correspond" à la table. Le problème est que je dois JOINDRE les 2 tables avec 2 ID. Je sais comment rejoindre des tables avec 1 id en commun, mais je n'arrive pas à comprendre comment le faire avec 2 identifiants, et à conserver intactes les informations des 2 équipes impliquées dans chaque match.

Est-ce possible? Ou dois-je créer des requêtes séparées?

Répondre

9
select match.*, teama.name, teamb.name 
from matches as match 
inner join teams as teama on teama.id = match.team_A_id 
inner join teams as teamb on teamb.id = match.team_B_id 

travaillerait dans SQL Server et MySQL probablement aussi.

+0

Oui! C'est ce que j'ai cherché pendant des siècles! Merci – Thavarith

6

Inclure une seconde fois la table des équipes (avec un alias différent) et de traiter la requête comme étant entre trois tables:

SELECT * 
FROM matches m 
JOIN teams t1 ON m.team_A_id = t1.id 
JOIN teams t2 ON m.team_B_id = t2.id 
3
SELECT * 
    FROM matches m, team t1, team t2 
WHERE m.team_A_id = t1.id 
    AND m.team_B_id = t2.id 
Questions connexes