SQL-запрос: выберите все записи из таблицы1, которые существуют в таблице2 + все записи из таблицы2, которые не существуют в таблице1 - PullRequest
1 голос
/ 15 июля 2010

рассмотрим следующий пример. альтернативный текст http://i26.tinypic.com/1zo7mub.jpg

Мне нужно выбрать все записи из таблицы1, которые существуют в таблице2, а также + все записи из таблицы2, которые не существуют в таблице1, но существуют в таблице2 и имеют IsActive = 1 и статус не равен нулю.

Сначала я попробовал это с объединением, но как выполнить более позднюю часть, где я должен выбрать записи, которых нет в таблице 1? Я должен сделать это внутри одного запроса, предположительно, с представлением SQL.

Редактировать Мне нужно объединить результаты, как UNION из 2 таблиц, поэтому в случае отсутствия строк в table1, но в table2 столбцы, принадлежащие table1, будут пустыми.

Ответы [ 3 ]

2 голосов
/ 15 июля 2010

Здесь вам понадобится внешнее соединение.

http://msdn.microsoft.com/en-us/library/ms187518.aspx

2 голосов
/ 15 июля 2010

Вот пример запроса:

select  *
from    Table2 t2
left join
        Table1 t1
on      t1.id = t2.id
where   t1.id is not null
        or (isActive = 1 and status is not null)

Первая строка предложения where заботится о «всех записях из таблицы1, которые существуют в таблице2». Вторая строка для «не существует в таблице 1, но существует в таблице 2 и имеет IsActive = 1 и статус не нуль».

0 голосов
/ 15 июля 2010

Это оно? Не уверен, правильно ли я понял, что вы хотите сделать.

SELECT
    *
FROM
    Table1 t1
        JOIN
    Table2 t2 ON (t1.ID = t2.ID OR (t1.ID IS NULL AND t2.isActive = 1 AND t2.Status IS NOT NULL))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...