Мне нужна помощь с SQL-запросом, над которым я работаю. Вот упрощенная версия данных, с которыми я работаю. У меня есть 3 таблицы:Сложный запрос сервера sql
Контакты:
- ContactID
- ContactName
Материалы:
- SubmissionID
- ContactID
- SubmissionTypeID
SubmissionTypes:
- SubmissionTypeID
- SubmissionType
Мне нужно вернуть все контакты (присоединено к Submissions
по адресу ContactID
), где есть SubmissionTypeIDs
, которые соответствуют списку SubmissionTypeIDs
. Сложная часть заключается в том, что мне нужны только результаты, в которых у контакта есть запись с сообщением SubmissionTypeID
, которая соответствует каждому из значений в списке. Так, например, если бы я имел эти данные:
Contacts
----------------
1 | Jim Johnson
2 | Sally Anderson
SubmissionTypes
----------------------
1 | Contact Form
2 | Request Form
3 | Generic Form
Submissions
----------------------
1 | 1 | 1
2 | 1 | 2
3 | 2 | 1
Если мои SubmissionTypeID
значения 1 и 2, я хочу, чтобы получить следующие результаты:
Jim Johnson | Contact Form
Jim Johnson | Request Form
Я не хотел бы см. Салли Андерсон, потому что у нее нет записи в материалах для обоих значений.
Я предполагаю, что есть несколько способов сделать это. Я рад видеть ваши идеи.
Спасибо!
в зависимости от других ограничений, 'имея подсчет (*) = 2', возможно, необходимо будет' имея граф (отличный submissiontypeid) = 2'. +1 для 'intersect'. – Laurence
@ Лоуренс согласился, как правило, я бы делал без отдельного по умолчанию, но я только что отредактировал его, потому что, вероятно, есть приличный шанс, что у контакта может быть более одного представления того же типа. –