Złączenia własne
Złączenie własne jest dokonywane na tej samej tabeli,
W celu wykonania złączenia własnego musimy użyć innego aliasu tabeli, aby zidentyfikować
w zapytaniu każde odwołanie do niej. Rozważmy przykład: tabela department zawiera kolumnę head_dept, która zawiera wartość dept_no nadrzędnego działu każdego
działu. Jeżeli dział nie ma nadrzędnego działu, head_dept ma wartość NULL.
Tabela department
zawiera następujące wiersze:
Dział Corporate
Headquarters nie posiada działu nadrzędnego, więc w kolumnie head_dept występuje wartość NULL. Działem nadrzędnym Marketing, Field Office: East Coast, Field
Office: Canada, Pacific Rim: Headquarters, European Headquarters jest dział
Sales and Marketing, który z kolei
podlega działowi Corporate Headquarters.
Za pomocą złączenia własnego możemy wyświetlić nazwę
działu oraz jego dział nadrzędny.
W poniższym zapytaniu występują dwa odwołania do
tabeli department, wykorzystujące
aliasy d i h. Alias d jest
wykorzystywany do pobrania nazwy działu, a alias h jest używany do pobrania nazwy działu nadrzędnego. Złączenie
własne jest dokonywane za pośrednictwem kolumn d.head_dept i h.dept_no:
Ponieważ w przypadku Corporate Headquarters kolumna head_dept
ma wartość NULL, warunek
złączenia nie zwraca tego wiersza.
Dopuszczalne jest łącznie złączeń zewnętrznych i
własnych. W poniższym zapytaniu takie połączenie zostało użyte w celu pobrania
wiersza dla Corporate Headquarters.
Należy zwrócić uwagę na zastosowanie funkcji COALESCE() w celu wyświetlania informacji wskazującej, że Corporate Headquarters jest podległy
akcjonariuszom (jest głównym działem nadrzędnym):
Złączenia krzyżowe
Złączenie krzyżowe to inaczej iloczyn kartezjański.
Jeżeli chcemy uzyskać iloczyn kartezjański , w standardzie SQL/92 musimy jawnie
określi to w zapytaniu za pomocą słów kluczowych CROSS JOIN. W poniższym zapytaniu iloczyn kartezjański tabel customer i country jest generowany za pomocą tych słów kluczowych:
Brak komentarzy:
Prześlij komentarz