Вернуть результаты ID NOT IN в определенной таблице - PullRequest
2 голосов
/ 05 марта 2012

Я пытаюсь написать запись, и логика, которую я ищу, в основном.Если какие-либо идентификаторы пользователей из таблицы 1 не существуют в таблице 2, укажите их в результатах.Итак, я сделал:

SELECT
  UserColder.ContactName,
  UserColder.Phone,
  UserColder.Email,
  UserColder.Website,
  Country.Name,
  UserColderZIP.[ZIP Code],
  UserColderZIP.[State Abbreviation]
FROM
  dbo.UserColder
  LEFT OUTER JOIN dbo.CountryUser
    ON UserColder.ID = CountryUser.[User ID]
  INNER JOIN dbo.Country
    ON CountryUser.[Foreign ID] = Country.ID
  LEFT OUTER JOIN dbo.UserColderZIP
    ON UserColder.ID = UserColderZIP.UserColder
WHERE
  UserColder.ID NOT IN (CountryUser.[User ID])

Возвращает данные без Where Но с Where я пытаюсь получить его, чтобы показать все результаты, где Id из UserColder не имеет записей вCountryUser.Сейчас он не дает результатов, и я знаю, что ID 2 там не существует.Есть идеи, что я делаю не так?

Спасибо!

Ответы [ 2 ]

4 голосов
/ 06 марта 2012

Поскольку у вас есть LEFT OUTER JOIN, чтобы получить записи из UserColder, которых нет в CountryUser, проверьте NULL.Объединенные строки, которые не имеют соответствующего значения, вернут NULL.

WHERE
  CountryUser.[User ID] IS NULL
0 голосов
/ 06 марта 2012

Просто возьмите информацию из UserColder и убедитесь, что UserColder.ID не в CountryUser, проверив ее (выберите оператор в где).

SELECT
  UserColder.ContactName,
  UserColder.Phone,
  UserColder.Email,
  UserColder.Website,
  Country.Name,
  UserColderZIP.[ZIP Code],
  UserColderZIP.[State Abbreviation]
FROM
  dbo.UserColder
  INNER JOIN dbo.Country
    ON CountryUser.[Foreign ID] = Country.ID
  LEFT OUTER JOIN dbo.UserColderZIP
    ON UserColder.ID = UserColderZIP.UserColder
WHERE
  UserColder.ID NOT EXISTS (select [user id] from dbo.CountryUser where CountryUser.[User ID])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...