Nie jestem pewien, jak opisać moją strukturę tabeli, więc nadzieję, że to ma sens ...Jak zrobić Outer Dołącz na> 2 tabelach (Oracle)
mam 3 tabele w hierarchicznej relacji tak, że A ma jedna do wielu relacji z B, która z kolei ma jedną lub wiele relacji z C. Sztuczka polega na tym, że klucz obcy w B i C może mieć wartość zerową (tj. nie zdefiniowano rodzica). Mam również D i E bez żadnego związku z A, B lub C (bezpośrednio).
Wreszcie mam F, który jest tabelą złączeń z wieloma do jednego związkami z C, D i E. Żadne z jej pól (FK do innych tabel) nie są null.
Chciałbym napisać instrukcję SQL, która łączy wszystkie tabele w jednym zestawie wyników. Wiem, że muszę do zewnętrznego sprzężenia użytkownika, ponieważ chcę, aby wszystkie A wrócił, niezależnie od tego, czy ma dzieci w B i podobne z B i C.
Pytanie pierwsze: Patrzyłem na sprzężenie zewnętrzne ANSI składnia (wcześniej korzystałem tylko z Oracle "(+)") i nie mogę znaleźć przykładu, który łączy zewnętrzne więcej niż 2 tabele. Czy ktoś może podać/wskazać przykład?
Pytanie drugie: Czy można uwzględnić rekordy z tabel D i E na podstawie tabeli łączenia F? Jeśli tak, czy robi to z zewnętrznymi złączeniami?
Dzięki!
EDIT
Oczywiście, zaraz po tym, jak pisać to, znalazłem przykład, który odpowiada na pytanie 1. Jednak pytanie 2 nadal ma mnie zakłopotany.
Przykład:
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
Prawdopodobnie nie chcesz, aby FULL OUTER JOIN był połączony; istnieje, ale jest bardzo rzadko używany (lub przydatny). –
Nie określono, które kolumny w F łączą się z każdą z pozostałych tabel - co oznacza, że nikt nie może udzielić jednoznacznej odpowiedzi. –
Czy możesz przesłać niektóre przykładowe dane i zestaw rekordów, które chcesz pobrać? Litery A, B i C nie mają zbyt wielu informacji. – Quassnoi