2009-10-13 3 views
4

У меня есть две таблицы A и B ... A и B могут быть объединены общим столбцом. A и B будут иметь несколько строк, которые соответствуют столбцу соединения. Но A имеет несколько строк, которые B не имеет, и B имеет некоторые строки, которые не имеют A.SQL Double-Outer Join?

LEFT OUTER JOIN from A to B даст все строки в A, заполняя NULLS для столбцов B, которые невозможно сопоставить. RIGHT OUTER JOIN дает все строки в B, заполняя NULLS для столбцов A, которые невозможно сопоставить.

Я хотел бы получить все строки из А и В, в то время как возвращение NULL для столбцов А по строкам, которые только в B, и NULL для столбцов B, которые только в А.

I» m знаю, что я могу сделать это с UNION вместе с 1 INNER + 1 LEFT + 1 RIGHT, но есть ли один запрос SELECT, который может это сделать?

ответ

3

Вы хотите полное внешнее соединение. Не пытайтесь делать это с UNIONS - есть некоторые очень сложные случаи кросс, и почти невозможно получить право.

Синтаксис здесь:

http://msdn.microsoft.com/en-us/library/aa213228(SQL.80).aspx

2

Да, ЛЕВЫЙ ... UNION ... ПРАВЫЙ такое же, как JOIN FULL OUTER.