Я не знаю, как описать мою структуру таблицы, так что надеюсь, что это имеет смысл ...Как сделать внешнее соединение на> 2 таблицы (Oracle)
У меня есть 3 таблицы в иерархических отношениях, что А имеет отношение от одного к многим к B, которое, в свою очередь, имеет отношение от одного к многим с C. Фокус в том, что внешнему ключу в B и C разрешено быть нулевым (т.е. не определено родителем). У меня также есть D и E без отношения к A, B или C (напрямую).
Наконец, у меня есть F, которая является таблицей соединений с множеством к одному с C, D и E. Ни одно из ее полей (FKs для других таблиц) не может быть опущено.
Я хотел бы написать инструкцию 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
Возможно, вы не хотите ПОЛНОГО ВНЕШНЕГО СОЕДИНИТЕЛЯ; он существует, но он очень редко используется (или полезен). –
Вы не указали, какие столбцы в F соединяются с каждой из других таблиц, что означает, что никто не может дать окончательный ответ. –
Не могли бы вы разместить некоторые образцы данных и набор записей, которые вы хотели бы получить? A, B - это не очень информативные имена. – Quassnoi