/ZłączeniaZewnętrzne

Z Brain-wiki
Wersja z dnia 14:44, 23 maj 2015 autorstwa Jarekz (dyskusja | edycje) (Utworzono nową stronę "= TI:WTBD/ZłączeniaZewnętrzne = == Złączenia zewnętrzne == * ''tabela1'' LEFT [OUTER] JOIN ''tabela2'' ON ''warunek_złączenia'' Wynik złączenia zewnętr...")
(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)

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.