/ZłączeniaZewnętrzne

Z Brain-wiki

TI:WTBD/ZłączeniaZewnętrzne

Złączenia zewnętrzne

  • tabela1 LEFT [OUTER] JOIN tabela2 ON warunek_złączenia

Wynik złączenia zewnętrznego można opisać tak: do wyniku złączenia wewnętrznego dołączamy dodatkowe wiersze, utworzone w taki sposób, że dla każdego wiersza lewej tabeli (tabela1), który nie znalazł się w złączeniu, ponieważ nie istnieje w tabeli2 wiersz taki, żeby był spełniony warunek_złączenia -- dołączony wiersz utworzony jest z pól tegoż wiersza tabeli1 uzupełnionych o wartości NULL w polach pochodzących z tabeli2.

Zasadniczo oprócz lewego złączenia zewnętrznego określone jest prawe i obustronne złączenia zewnętrzne. Wiele implementacji SQL pomija jednak realizację tych operacji, jako nie wnoszących nic istotnie nowego.

Uwaga: w przypadku złączenia zewnętrznego nie jest obojętne dla wyniku, jak warunki użyte w zapytaniu zostaną rozdzielone pomiędzy klauzulę ON złączenia i klauzulę WHERE zapytania. Opisana powyżej konstrukcja uwzględnia jedynie warunek z klauzuli ON danego złączenia. W szczególności, gdy pominąć klauzulę ON, to złączenie zewnętrzne nie będzie się różnić od zwykłego (wewnętrznego) -- za wyjątkiem przypadku, gdy prawa tabela jest pusta (ma zero wierszy):

  • iloczyn kartezjański dowolnego zbioru ze zbiorem pustym jest zbiorem pustym;
  • (lewe) złączenie zewnętrzne dowolnej tabeli A z dowolną tabelą ma co najmniej tyle wierszy, co tabela A; a więc:
  • (lewe) złączenie zewnętrzne dowolnej tabeli A z tabelą pustą ma tyle wierszy, ile tabela A.