Как использовать CASE в операторе JOIN для объединения двух таблиц в зависимости от условия?

У меня есть три таблицы: Эл. адрес, customer_new а также customers_old.
Сейчас в Эл. адрес В таблице есть поле под названием тип который содержит 0 или же 1.
Так что если тип содержит 0 тогда я хочу получить название колонка из customer_new стол еще из customer_old Таблица.

Для этого я сделал ниже запрос MySQL:

SELECT email.*,
CASE email.`type`
WHEN 1 THEN customer_old.name
ELSE customer_new.name
END AS customer_name
LEFT JOIN
CASE email.`type`
WHEN 0 THEN customer_new ON email.customer_id = customer_new.id
ELSE customer_old ON email.customer_id = customer_old.id
END
FROM email

Теперь, когда я запускаю этот запрос, mysql всегда выдает ошибку.
Может ли кто-нибудь решить мою проблему, касающуюся объединения двух таблиц, с помощью оператора CASE на основе условия?

Заранее спасибо.

2

Решение

Попробуйте по запросу ниже.

SELECT email . * , IF( email.type = '1', customer_old.name, customer_new.name ) AS name
FROM email
LEFT JOIN customer_old ON ( customer_old.id = email.customer_id )
LEFT JOIN customer_new ON ( customer_new.id = email.customer_id )
3

Другие решения

select email.*,
CASE email.type
when 1 then customer_old.name
else customer_new.name
end as filteredname
from email,customer_new,customer_old
where
customer_new.id=email.id
and
customer_old.id=email.id;

Вы можете использовать левое соединение для оптимизации выполнения.

0

Альтернатива,

SELECT * FROM email
LEFT JOIN customer_new AS customer ON email.customer_id = customer.id
WHERE email.type = 0

UNION

SELECT * FROM email
LEFT JOIN customer_old AS customer ON email.customer_id = customer.id
WHERE email.type = 1
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector