2015-11-02 5 views
0

Я пытаюсь получить данные и присоединиться к таблице с другим IF, соответствующим определенному атрибуту в базовой таблице. После кода может объяснить то, что я пытаюсь сделать:Использование IF с JOIN в SELECT mysql

SELECT * FROM Base_Table 
LEFT JOIN 
IF(Base_Table.Class = "A", 
    Type ON Type.Id = Base_Table.Type_Id, 
    Box_Type ON Box_Type.Id = Base_Table.Type_Id) 
WHERE Base_Table.Id = 4; 

ответ

0

У меня был такой же вопрос как ваш, но я нашел решение, используя UNION; IF для выбора, поданного не для таблицы. Я предлагаю вам использовать UNION, как в примере ниже:

SELECT * FROM Base_Table 
LEFT JOIN Type ON Type.Id = Base_Table.Type_Id 
WHERE Base_Table.Id = 4 

UNION 

SELECT * FROM Base_Table 
LEFT JOIN Box_Type ON Box_Type.Id = Base_Table.Type_Id 
WHERE Base_Table.Id = 4; 

Надеется, что это будет работать для вас!

+1

Это прекрасно работает, если таблицы 'Type' и' Box_Type' имеют одинаковое количество столбцов и в том же порядке (что касается их значения). В противном случае вам может потребоваться явно указать столбцы из этих таблиц, вместо использования '*' – trincot