Отклонить строку из выбора, если условие существует в другой таблице - PullRequest
1 голос
/ 09 июля 2011

У меня есть две таблицы.

  1. Таблица контактов - contact_id, contact_email, contact_name и т. Д.
  2. Таблица отказа - contact_email, сфера их отказа (событие, компания)

Таким образом, у одного контакта может быть несколько отказов от участия в мероприятии, но что меня действительно волнует, так это если у них отказ от участия всей компании.

Как мне объединить данные, чтобы, еслиу контакта есть совпадение с любой строкой в ​​таблице отказа, имеющей область "компания", которую он не отобразит в результате?

Ответы [ 2 ]

2 голосов
/ 09 июля 2011
SELECT c.*
    FROM Contacts c
    WHERE NOT EXISTS(SELECT NULL
                         FROM OptOut o
                         WHERE c.contact_email = o.contact_email
                             AND o.scope = 'company')

Это также можно сделать с помощью LEFT JOIN:

SELECT c.*
    FROM Contacts c
        LEFT JOIN OptOut o
            ON c.contact_email = o.contact_email
                AND o.scope = 'company'
    WHERE o.contact_email IS NULL
1 голос
/ 09 июля 2011

выберите * из контактов, в которых contact_email не указан (выберите contact_email из optout, где scope = 'company');

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...