Я пишу приложение C# и использую Access .mdb. У меня есть таблица с сообщениями электронной почты и таблица с сообщениями (каждый почтовый ящик может быть назначен нескольким группам работников).SQL: выберите данные, которые не имеют отношений в другой таблице
Я хочу получать сообщения из первой таблицы, которые НЕ назначены какой-либо команде, то есть либо не имеют записей во второй таблице, либо имеют пустую запись. Он работает нормально с пустыми вводами, но не возвращает строки, которые вообще не имеют этой записи назначения.
Я использую следующий запрос:
SELECT TOP 10 Mails.*
FROM Mails INNER JOIN MailAssignments ON Mails.msgId = MailAssignments.msgId
WHERE (Mails.msgId <= ?)
AND
(Mails.msgId NOT IN (SELECT msgId FROM MailAssignments))
OR (MailAssignments.forTeam IS NULL)
OR (MailAssignments.forTeam = '')
UPDATE:
мне нужно использовать какой-то JOIN, потому что в некоторых условиях запрос должен также возвращать строки, имеющие отношение в другая таблица (например, когда кто-то хочет отображать сообщения из своей команды и неназначенные сообщения).
UPDATE:
Хорошо, я предполагаю, что я могу сделать это проще, удалив любое задание из второй таблицы, так что мне не нужно, чтобы проверить пустые задания, только те, которые не существуют вообще. Но мне по-прежнему нужно иногда показывать данные, которые назначаются ALONG WITH с данными, которые не были назначены. И мне нужно, чтобы построить один запрос за то, что будет иметь только разные параметры изменились:/
UPDATE/РЕШЕНИЕ:
Я сделал еще некоторые коррективы, но LEFT JOIN в основном сделал трюк для меня! Спасибо за этот намек и всю вашу помощь, ребята!
Обновление: Вы не можете иметь сообщения от своей команды для почты которые не назначены команде, не так ли? –
Я хочу, чтобы работники видели сообщения своей команды по умолчанию, но когда они разрешают другие виды, они должны видеть также неназначенные сообщения (поэтому они могут затем назначить их своей команде, например) – Val
Я сделал несколько настроек, но LEFT JOIN в основном сделал трюк для меня! Спасибо за помощь ребята! – Val