Я не уверен, как описать структуру моей таблицы, так что надеюсь, что это имеет смысл ...
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