MySQL: использование псевдонима в условии соединения

0
SELECT t1.*, IFNULL(t2.profile_id, t3.profile_id) AS 'profile_id'
FROM table1 AS t1
LEFT JOIN table2 AS t2
    ON t1.id = t2.some_coulmn
LEFT JOIN table3 AS t3
    ON t1.id = t3.some_coulmn
LEFT JOIN table4 AS t4
    ON profile_id = t4.some_column

Я пытаюсь использовать псевдоним (profile_id) внутри моего условия соединения. Это не удается. Есть ли способ сделать это?

  • 1
    Повторите выражение в условии.
  • 0
    Я сделал, запрос продолжает идти и никогда не заканчивается.
Показать ещё 3 комментария
Теги:

1 ответ

0

Псевдонимы столбцов, определенные в предложении SELECT, нельзя использовать в условиях соединения. Это связано с тем, что предложение FROM оценивается перед предложением SELECT.

Если я следил за вами правильно, вы, вероятно, хотите:

SELECT t1.*, IFNULL(t2.profile_id, t3.profile_id) AS 'profile_id'
FROM table1 AS t1
LEFT JOIN table2 AS t2
    ON t1.id = t2.some_coulm
LEFT JOIN table3 AS t3
    ON t1.id = t3.some_coulm
LEFT JOIN table4 AS t4
    ON IFNULL(t2.profile_id, t3.profile_id) = t4.some_column

Ещё вопросы

Сообщество Overcoder
Наверх
Меню