2013-10-27 5 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

Как вы можете видеть выше, я пытаюсь получить имена двух значений cards.main И cards.enemy из list таблицы.

Спасибо, и на любые вопросы будет дан ответ как можно скорее!

+0

ВЫБРАТЬ cards.main, cards.enemy должен делать, верно? – Krishna

+0

Данные в card.main & cards.enemy являются идентификаторами, которые затем я пытаюсь получить их фактическое имя LEFT JOIN'ing в списке таблиц. – 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 OR cards.enemy = list.name», но это даст вам две строки в вашем наборе результатов. –

Смежные вопросы