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

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

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

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

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

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

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

Спасибо!

ИЗМЕНИТЬ

Конечно, сразу после того, как я опубликую это, Я не говорю здесь о мягком переносе текста - я хочу нажать какую-нибудь комбинацию клавиш и заставить Eclipse вставить и удалить фактические символы новой строки, чтобы файл выглядел нормально при просмотре в базовом текстовом редакторе. По сути, то же самое, что и функция 'fill-paragraph' в Emacs. Я знаю, что у некоторых редакторов исходного кода есть интеллектуальные программы форматирования, которые работают с комментариями, но в основном текстовом редакторе, похоже, ничего нет.

Если этого не существует, мне, возможно, придется пойти и написать что-нибудь самому. ..

7
задан Simon 15 September 2010 в 22:00
поделиться