SQL在具有不同值的两列中进行相同的连接

时间:2012-04-18 22:26:32

标签: sql join

我不知道最好的方法是什么

FIGHT

Fighter_ID1 | Fighter_ID2

FIGHTERS

ID | Fighter

输出

Fighter1 | Fighter2

我想加入表fighter的列FIGHTERS和表FIGHT中的两列。

这可能是一个愚蠢的问题,但我不知道如何以正确的方式做到这一点

对不起我的英文并感谢

4 个答案:

答案 0 :(得分: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 :(得分:1)

看起来你需要两次加入桌面。

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

答案 2 :(得分:1)

怎么样

    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

答案 3 :(得分:1)

因为你每场战斗都会有2架战斗机,所以你需要为你的桌子添加别名。我在这里直接输入这个,所以我不能保证它是100%准确但它应该看起来像这样:

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

然后你可以使用F1.Fighter和F2.Fighter作为你的领域获得战斗机名称。