Требуется помощь SQL.SQL-запрос для получения набора результатов на основе внутреннего соединения
Столы
- лицо (номер, имя)
- Сообщение (идентификатор, текст)
- PersonMsgResponse (MsgID, PersonId, delMethod, получил (Y/N)
Структура таблицы PersonMsgResponse
- MessageID (MsgId)
- PersonID (PerID)
- MessageDeliveredBy (DelMethod)
- Полученное (Y/N) (Получено)
Пример строки в таблице PersonMsgResponse таблице
мне нужно верните список имен лиц, которые НЕ получили сообщение.
Как я могу заставить SQL возвращать имена членов для тех членов, которые не получили сообщение с помощью любого из методов?
Например, в списке записей выше мой запрос должен возвращать только член 1, так как член 2 получил сообщение посредством телефонного вызова, тогда как элемент 1 не получил сообщение с помощью какого-либо метода.
Благодарим за помощь.
Это сделало трюк с добавлением идентификатора сообщения. Окончательный запрос выглядел так: – Tim
SELECT m.Person ID FROM Person p WHERE m.PersonID IN (SELECT MemberID FROM PersonMsgResponse pmr WHERE pmr.MessageID = 1 AND pmr.Received = 'N' И pmr.PersonID NOT IN (SELECT MemberID FROM PersonMsgResponse pmr WHERE pmrMessageID = 1 AND pmr.Received = 'Y')) – Tim