2014-01-15 9 views
1

У меня есть 2 базы данных Oracle Oracle.Как присоединиться к двум таблицам

A: Col1 | Col2 | Key 
    c1  c2 1 
    c3  c4 2 
    c5  c6 3 


B: Co1 | Co2 | Key 
     a1  a2 2 
     a3  a4 3 

мне нужно выбрать, что дает мне следующую таблицу:

C: 
    a1 a2 c3 c4 
    a3 a4 c5 c6 
    - - c1 c2 

Как я могу сделать это с SQL? Нормальный Присоединиться:

select * from a, b where a.key = b.key; 

не дает желаемого результата.

ответ

4

Вам нужно левое внешнее соединение:

select b.col1, b.col2, a.col1, a.col2 
from a left outer join 
    b 
    on a.key = b.key; 
+0

Спасибо! Я проверю его, а затем приму. – Tony

+1

Работает отлично. http://sqlfiddle.com/#!4/2aa79/4/0 Используйте 'left external join', когда вы хотите иметь все, что находится слева от объекта, даже если ничего не связано с объектом справа (слева внешнее соединение) –

2

При выполнении объединения, как вы это будет возвращать только те записи, которые существуют в обеих таблицах. Для того, чтобы получить результат, который вы ищете попробовать что-то вроде этого ...

SELECT B.Co1, B.Co2, A.Col1, A.Col2 
FROM A 
LEFT JOIN B ON A.Key = B.Key 
+0

Порядок таблиц из-предложения неверен. Пожалуйста, проверьте принятый ответ. – Tony

2

попробовать этот запрос:

SELECT B.Co1, B.Co2, A.Col1, A.Col2 
FROM A,B 
WHERE A.Key = B.Key(+); 
0

Здравствуйте вы можете попробовать это:

SELECT b.Col1, b.Col2, a.Co1, a.Co2 FROM s 
LEFT JOIN a ON a.Key = b.Key 

JOIN (INNER JOIN)

Ключевое слово INNER JOIN выбирает все строки из обеих таблиц, если существует совпадение между столбцы. Если в таблице «А» есть строки, которые не имеют совпадений в «В», эти строки НЕ будут перечислены.

LEFT JOIN

ЛЕВАЯ JOIN возвращает ключевое слово все строки из левой таблицы (А), даже если нет совпадений в таблице справа (B).

+0

Порядок таблиц из-предложения неверен. Пожалуйста, проверьте принятый ответ. – Tony

Смежные вопросы