2012-04-18 3 views
1

Je ne sais pas quelle est la meilleure façon de le faireSQL même se joindre à deux colonnes avec des valeurs différentes

FIGHT

Fighter_ID1 | Fighter_ID2 

FIGHTERS

ID | Fighter 

OUTPUT

Fighter1 | Fighter2 

Je veux rejoindre la colonne fighter de la table FIGHTERS avec les deux colonnes du tableau FIGHT ..

Il peut être une question stupide, mais je ne sais pas comment faire cela d'une manière correcte

Désolé mon anglais et merci

+0

Voulez-vous joindre les résultats l'un après l'autre ou dans deux colonnes distinctes dans le même résultat? – rcdmk

+0

de sortie ont 2 colonnes – leinho

Répondre

2
SELECT F1.Fighter as Fighter1, 
     F2.Fighter as Fighter2 
FROM FIGHT 
     INNER JOIN FIGHTERS as F1 ON FIGHT.Fighter_ID1 = F1.ID 
     INNER JOIN FIGTHERS as F2 ON FIGHT.Fighter_ID2 = F2.ID 
1

semble que vous devez joindre à la table deux fois.

SELECT fs1.Fighter as Fighter1, fs2.Fighter as Figther2 
FROM Fight f 
INNER JOIN Fighters fs1 
    ON f.Fighter_ID1 = fs1.id 
INNER JOIN Fighters fs2 
    ON f.Fighter_ID2 = fs2.id 
1

que diriez-vous

select f1.name, f2.name -- pick any column you like 
    from FIGHT f -- from here we join both fighters by id 
    join FIGHTER f1 on f.fighter_id1 = f1.id 
    join FIGHTER f2 on f.fighter_id2 = f2.id 
1

Parce que vous auriez 2 combattants pour chaque combat que vous voulez créer un alias de votre table. Je tape ce directement ici, donc je ne peux pas garantir qu'il est précis à 100%, mais il devrait ressembler à ceci:

SELECT * 
FROM FIGHT 
    INNER JOIN FIGHTERS AS F1 ON F1.ID = Fighter_ID1 
    INNER JOIN FIGHTERS AS F2 ON F2.ID = Fighter_ID2 

Ensuite, vous pouvez obtenir les noms de combat utilisant F1.Fighter et F2.Fighter que vos champs.

Questions connexes