2013-10-27 226 views
0

信息从相同的LEFT JOIN表中检索两次匹配数据?

有没有办法,我可以从另一个(下同)表中的一个LEFT JOIN检索信息的两位两次呢?

尝试

下面是SQL查询我试着放在一起,希望将工作。我希望你能从中看到我想要做的。

SELECT cards.*, list.name FROM cards LEFT JOIN list ON cards.main = list.id AS main_name AND cards.enemy = list.id AS enemy_name WHERE cards.id = 1

正如你可以看到上面我试图从list表中检索两个值cards.maincards.enemy的名字。

谢谢,任何问题都将尽快回复!

+0

SELECT cards.main,cards.enemy应该做的,对不对? – Krishna

+0

cards.main&cards.enemy中的数据是ID,然后我试图通过LEFT JOIN检索表列表来获取它们的实际名称。 – Harry

回答

0

你必须加入名单表两次:

SELECT cards.*, main_name.name, enemy_name.name 
FROM cards 
LEFT JOIN list AS main_name ON cards.main = main_name.id 
LEFT JOIN list AS enemy_name ON cards.enemy = enemy_name.id 
WHERE cards.id = 1 
+0

在一个连接中没有办法做到这一点吗? – Harry

+0

不,这些是列表中的不同行,因此是不同的连接。你为什么要加入一个? –

+0

尽管你可以做'ON cards.main = list.name或cards.enemy = list.name',但是这会给你结果集中的两行 –