Присоединение к пустой таблице для возврата всех строк - PullRequest
8 голосов
/ 21 марта 2011

У меня есть таблица (Table1), которая имеет составной первичный ключ (Column1 + Column2).Я использую его как внешний ключ в другой таблице (Table2).

Теперь я хочу в операторе SELECT выбрать все записи из Table1 и Table2.Но он возвращает мне 0 строк, потому что таблица2 пуста.Я хочу, чтобы все записи из таблицы1, и если он не существует в таблице2, значение столбцов в таблице2 должно быть нулевым.

Я знаю, мне нужно только присоединиться к нему.Но я не правильно понимаю.

Спасибо

Ответы [ 4 ]

18 голосов
/ 21 марта 2011
SELECT * FROM Table1 T1
LEFT JOIN Table2 T2 ON T1.Id = T2.FK

FK - ваш внешний ключ на второй таблице.Левое соединение вернет все строки из таблицы1, даже если они не существуют в таблице 2.

5 голосов
/ 21 марта 2011

Вам необходимо внешнее объединение

SELECT *
FROM   table1
       LEFT OUTER JOIN table2
         ON table1.column1 = table2.column1
            AND table1.column2 = table2.column2  

Left означает сохранение всех строк левой (первой) таблицы в запросе.

1 голос
/ 21 марта 2011

Вам нужно LEFT JOIN

SELECT Table1.*, Table2.*
FROM Table1
LEFT JOIN Table2 ON Table1.Column1 = Table2.Column2

Попробуйте это.

0 голосов
/ 21 марта 2011

Используйте LEFT JOIN для объединения таблиц. См. SQL SERVER JOINS , чтобы понять концепцию.

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