Соединение таблиц в Oracle. Типы соединений Inner,left,right,outer join.
-- Типы соединений. Примеры построены на виртиальных таблицах. Для демонстрации физически таблицы создавать не надо. -- Запрос вернет строки по которым есть соответствие по ключу в A и B. (возвратит #cc66cc;">4 строки) WITH A #b1b100;">as ( SELECT #cc66cc;">1 aid from dual union all SELECT #cc66cc;">2 aid from dual union all SELECT #cc66cc;">3 aid from dual union all SELECT #cc66cc;">4 aid from dual ), B #b1b100;">AS ( SELECT #cc66cc;">1 bid from dual union all SELECT #cc66cc;">2 bid from dual union all SELECT #cc66cc;">3 bid from dual union all SELECT #cc66cc;">4 bid from dual ) SELECT AID, BID FROM A INNER JOIN B ON aid=bid; -- Запрос вернет строки по которым есть соответствие по ключу в A и B. WITH A #b1b100;">AS ( SELECT #cc66cc;">1 aid from dual union all SELECT #cc66cc;">2 aid from dual union all SELECT #cc66cc;">3 aid from dual union all SELECT #cc66cc;">4 aid from dual ), B #b1b100;">AS ( SELECT #cc66cc;">1 bid from dual union all SELECT #cc66cc;">2 bid from dual union all SELECT #cc66cc;">3 bid from dual union all SELECT #cc66cc;">5 bid from dual ) SELECT AID, BID FROM A INNER JOIN B ON aid=bid; -- Если соответствия нет, то в поле для таблицы B проставит NULL. WITH A #b1b100;">AS ( SELECT #cc66cc;">1 aid from dual union all SELECT #cc66cc;">2 aid from dual union all SELECT #cc66cc;">3 aid from dual union all SELECT #cc66cc;">4 aid from dual ), B #b1b100;">AS ( SELECT #cc66cc;">1 bid from dual union all SELECT #cc66cc;">2 bid from dual union all SELECT #cc66cc;">3 bid from dual union all SELECT #cc66cc;">5 bid from dual ) SELECT AID, BID FROM A LEFT JOIN B ON aid = bid; -- Если соответствия нет, то в полях соответствующей таблицы проставит NULL. WITH A #b1b100;">AS ( SELECT #cc66cc;">1 aid from dual union all SELECT #cc66cc;">2 aid from dual union all SELECT #cc66cc;">3 aid from dual union all SELECT #cc66cc;">4 aid from dual ), B #b1b100;">AS ( SELECT #cc66cc;">1 bid from dual union all SELECT #cc66cc;">2 bid from dual union all SELECT #cc66cc;">3 bid from dual union all SELECT #cc66cc;">5 bid from dual ) SELECT AID, BID FROM A FULL JOIN B ON aid = bid; -- Запрос вернет результат соединения кадой строки из таблицы A с каждой строкой таблицы B. -- Кол-во строк в результате равно произведению кол-ва строк из А, умноженное на кол-ва строк из B WITH A #b1b100;">AS ( SELECT #cc66cc;">1 aid from dual union all SELECT #cc66cc;">2 aid from dual union all SELECT #cc66cc;">3 aid from dual union all SELECT #cc66cc;">4 aid from dual ), B #b1b100;">AS ( SELECT #cc66cc;">1 bid from dual union all SELECT #cc66cc;">2 bid from dual union all SELECT #cc66cc;">3 bid from dual union all SELECT #cc66cc;">5 bid from dual ) SELECT AID, BID FROM A CROSS JOIN B;