Я не уверен, как описать структуру моей таблицы, поэтому надеюсь, что это имеет смысл ...
У меня есть 3 таблицы в иерархических отношениях, так что A имеет отношение один ко многим с B, которое, в свою очередь, имеет отношение один ко многим с C. Хитрость заключается в том, что внешнему ключу в B и C разрешено быть нулевым ( т.е. родитель не определен). У меня также есть D и E без отношения к A, B или C (напрямую).
Наконец, у меня есть F, которая является таблицей соединения со многими отношениями один к одному с C, D и E. Ни одно из ее полей (FK для других таблиц) не может быть обнулено.
Я хотел бы написать оператор SQL, который объединяет все таблицы в один набор результатов. Я знаю, что должен использовать внешние соединения, потому что я хочу, чтобы все A возвращалось независимо от того, есть ли у них дочерние элементы в B и подобные с B и C.
Вопрос первый: Я изучал синтаксис внешнего соединения ANSI (раньше я использовал только Oracle ((+))) и не могу найти пример, когда внешнее объединяет более двух таблиц. Может ли кто-нибудь предоставить / указать на пример?
Вопрос второй: Можно ли включить записи из таблиц D и E на основе таблицы соединения F? Если это так, это делается с внешними объединениями?
Спасибо!
EDIT
Конечно, сразу после того, как я опубликовал это, я нашел пример, который отвечает на вопрос 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