Как выполнить внешнее объединение для> 2 таблиц (Oracle)

Я не уверен, как описать структуру моей таблицы, так что надеюсь, что это имеет смысл ...

I иметь 3 таблицы в иерархических отношениях, так что A имеет отношение один ко многим с B, которое, в свою очередь, имеет отношение один ко многим с C. Хитрость заключается в том, что внешнему ключу в B и C разрешено быть нулевым (то есть родительский элемент не определен ). У меня также есть D и E, не имеющие отношения к A, B или C (напрямую).

Наконец, у меня есть F, которая является таблицей соединения со связями «многие к одному» с C, D и E. Ни одно из ее полей (FK для других таблиц) не допускает значения NULL.

Я хотел бы написать оператор SQL, который объединяет все таблицы в единый набор результатов. Я знаю, что мне нужно использовать внешние соединения, потому что я хочу, чтобы все A возвращались независимо от того, есть ли у него дочерние элементы в B и аналогично с B и C.

Вопрос первый: Я смотрел на внешнее соединение ANSI синтаксис (раньше я использовал только Oracle "(+)") и не могу найти пример, в котором внешнее объединение объединяет более двух таблиц. Может ли кто-нибудь предоставить / указать на пример?

Второй вопрос: Можно ли включить записи из таблиц D и E на основе объединенной таблицы F? Если да, то выполняется ли это с помощью внешних соединений?

Спасибо!

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

Конечно, сразу после публикации я нашел пример, отвечающий на вопрос 1. Однако вопрос 2 все еще меня озадачил.

Пример:

         SELECT A.a,
                B.b,
                C.c
           FROM A
FULL OUTER JOIN B ON B.a = A.a
FULL OUTER JOIN C ON C.b = B.b
7
задан OMG Ponies 15 September 2010 в 20:59
поделиться