объединить две таблицы с разным количеством строк (на сервере SQL) - PullRequest
3 голосов
/ 23 сентября 2010

У меня есть две таблицы: A (col1, col2, col3, COL4)

B (col1, col2, col3, COL4)

Таблица A имеет 4 записи (строки), а B имеет 6 строк. Я хочу соединить их вот так, например, объединить их в таблицу C

C ( B.col1 , B.col2 , A.col3, A.col4, B.col3, B.col4) (таблицы имеют разные значения в записях только col1 и col2 содержат одинаковые значения)

когда я присоединяюсь к ним на A.col1 = B.col1 и A.col2 = B.col2, я беру декартово произведение: (

PS Я хочу иметь 6 строк в C , где B.col1, B.col2, B.col3, B.col4 имеют 6 рядов, а A.col3, A.col4 имеют 4 строки и другие. 2 ноль

пожалуйста, помогите мне ..

Ответы [ 3 ]

2 голосов
/ 23 сентября 2010

Вам нужно использовать FULL OUTER JOIN

Select a.Col1,
       a.Col2,
       a.Col3,
       a.Col4,
       b.Col3,
       b.Col4

From TableA a
Full Outer Join TableB b on a.Col1 = b.Col1
                         And a.Col2 = b.Col2

РЕДАКТИРОВАТЬ:

"не работает" никому не поможет.Может быть, вы могли бы предоставить более подробную информацию о том, почему это не работает для вас.

Вы можете добавить некоторые примерные данные и фактический ожидаемый результат к вашему вопросу.

например,

Create Table #TableA
(
Col1 
...
)

Insert Into #TableA
Values (...)

Чем яснее ваш вопрос, тем лучше будут ответы.Если люди не до конца понимают, в чем конкретно заключается ваша проблема, и ожидаемого результата, то как мы можем предоставить вам полный и правильный ответ.

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

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

1 голос
/ 23 сентября 2010

Попробуйте

SELECT A.col1, A.col2, A.col3, A.col4, B.col3, B.col4
FROM A
FULL OUTER JOIN B on (A.col1 = B.col1 AND A.col2 = B.col2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...