Возвращает список emp # NOT в запросе, Access 2007 - PullRequest
1 голос
/ 22 июля 2011

есть таблица с перечнем проблем, которые могут возникнуть у людей.Эти люди идентифицированы по номеру.У этих людей может быть любое количество проблем (обычно 5-10).Я хочу получить список людей, которым табак НЕ кажется для них проблемой.Мое решение состояло в том, чтобы сделать запрос людей, которые имеют проблемы с табаком, а затем запросить этот запрос с помощью оператора, чтобы вернуть числа, которых нет в запросе табака.Это легко сделать?Это закрыто?

запрос, чтобы получить список людей, которые имеют проблемы с табаком

SELECT DISTINCT Person.PersonID
FROM tblKentuckyCounties INNER JOIN (tblComorbidity INNER JOIN (Person INNER JOIN tblComorbidityPerson ON Person.PersonID = tblComorbidityPerson.personID) ON tblComorbidity.ID = tblComorbidityPerson.comorbidityFK) ON tblKentuckyCounties.ID = Person.County
WHERE ((Not (tblComorbidity.comorbidityexplanation)="tobacco"));

запрос Я хочу вернуть людей НЕ в первом запросе

SELECT  Person.PersonID AS Expr1, [Tobacco Query].PersonID
FROM [Tobacco Query] INNER JOIN Person ON [Tobacco Query].PersonID = Person.PersonID;

1 Ответ

1 голос
/ 22 июля 2011

Я не совсем разбираюсь в диалекте Access SQL, но вам нужен LEFT JOIN, а не INNER JOIN.LEFT JOIN подобен INNER JOIN в том, что он даст вам все строки с левой стороны объединения (в данном случае таблицы Person), соединенные с соответствующими строками с правой стороны объединения,Но LEFT JOIN также даст вам строки с левой стороны, которые не имеют совпадающие строки с правой стороны.Для этого подмножества строк правые столбцы будут иметь значения NULL.

Таким образом, вы сможете написать:

SELECT  Person.PersonID AS Expr1, [Tobacco Query].PersonID
FROM Person LEFT JOIN [Tobacco Query] ON [Tobacco Query].PersonID = Person.PersonID
WHERE [Tobacco Query].PersonID IS NULL;

Это исключит все записи, кроме тех, для которыхвы не можете найти подходящую запись в [Tobacco Query], которая должна быть именно той, которую вы ищете.

Редактировать: сначала была таблица Person справа ... с ЛЕВОЙ ПОДКЛЮЧЕНИЕЙ к нейдолжно быть слева, так как это таблица, из которой вы хотите получить данные.

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