У меня есть три таблицы:
email_addr_bean_rel
bean_id | email_address_id
email_addresses
id | email_address
prospect_lists_prospects
id | related_id
Выше приведено огромное упрощение, чтобы продемонстрировать проблему.Что мне нужно, так это список всех related_ids и всех доступных адресов электронной почты.Но я должен начать запрос в таблице email_addresses.Поэтому я использую ПРАВИЛЬНОЕ СОЕДИНЕНИЕ, чтобы получить любые related_ids без адресов электронной почты.Вот запрос:
SELECT
plp.related_id,
ea.email_address
FROM email_addresses AS ea
JOIN email_addr_bean_rel AS eabr
ON ea.id = eabr.email_address_id
RIGHT JOIN prospect_lists_prospects AS plp
ON eabr.bean_id = plp.related_id
WHERE
ea.email_address NOT IN ("x", "y", "z")
Если я уберу предложение WHERE, я получу все связанные идентификаторы, и для email_address будет установлено значение NULL для тех, которые не совпадают (как и ожидалось).Но когда я добавляю в предложение WHERE, я теряю эти записи RIGHT JOINED.
Есть ли какой-то аспект NOT IN
или RIGHT JOIN
, который я пропускаю и который может вызвать это?