У меня есть 3 таблицы InnoDB: электронные письма , веб-сайты и подписки .
электронные письма таблица содержит id
и email
столбцы.
веб-сайты таблица содержит id
и address
столбцы.
подписка таблица содержит id
,email_id
и website_id
столбцы.
То, что я пытаюсь сделать, это предоставить электронную почту и вернуть таблицу с столбцами address
и subscribed
.Первый представляет собой список всех адресов в таблице веб-сайтов , а второй получает значение 1, если указанный адрес электронной почты встречается в таблице subscription с website_id
, установленным в это значение.веб-сайт или 0 в противном случае.Но я готов сохранить все веб-сайты, даже если пользователь не найден.
Я застрял в том месте, где я должен изменить значение виртуального столбца subscribed
с 0 на 1, когда этоэлектронная почта содержит эту запись.
Вот мой запрос.Кто-нибудь знает, как это сделать?
SELECT `address`, "0" AS `subscribed`
/* 0 becomes 1 for the websites email has subscribed to */
FROM `websites` a
LEFT JOIN (
SELECT s.`website_id` FROM `subscriptions` s
RIGHT JOIN (
SELECT `id` AS `email_id` FROM `emails`
WHERE `email`='someone@mail.com' LIMIT 1) e
ON s.`email_id`=e.`email_id`) l
ON l.`website_id`=a.`id`
А вот пример выходных данных для желаемых значений для столбца subscribed
:
- Если электронная почта не найдена в
emails
таблица, все строки получают значение 0 - Если электронное письмо найдено в таблице
emails
... - , если оно не найдено в таблице
subscriptions
, все строки получают значение0 - , если он найден в таблице
subscriptions
, соответствующие строки адреса получают значение 1
Дайте мне знать, если я не смог объяснить это хорошо,Кто-нибудь знает, что я должен изменить в своем запросе?
Заранее спасибо.