2

我不知道这样做的最佳方法是什么

斗争

Fighter_ID1 | Fighter_ID2

战士

ID | Fighter

输出

Fighter1 | Fighter2

我想将表的列fighter与表FIGHTERS中的两列FIGHT..

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

对不起我的英语,谢谢

4

4 回答 4

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
于 2012-04-18T22:30:56.123 回答
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
于 2012-04-18T22:31:10.007 回答
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
于 2012-04-18T22:31:39.470 回答
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 作为您的字段来获取战斗机名称。

于 2012-04-18T22:32:01.847 回答