BD-1st-2.4-lab4.tresc-1.1-Slajd22
Połączenia zwrotne – cd.
Ogólna składnia połączenia zwrotnego jest taka sama, jak każdego innego typu połączenia omawianego poprzednio. Jedyną różnicą jest tutaj podanie tej samej nazwy relacji po obu stronach operatora definiującego połączenie. Dodatkowo, przy pisaniu zapisań z połączeniem zwrotnym należy pamiętać, żeby nadać różne aliasy obu wystąpieniom nazwy relacji w zapytaniu. Jest to konieczne aby możliwe było rozróżnienie z którego wystąpienia relacji pochodzi atrybut. Rozważmy przykładowe zapytanie na slajdzie:
SELECT p.nazwisko AS pracownik,
s.nazwisko AS szef
FROM pracownicy p JOIN pracownicy s
ON p.id_szefa = s.id_prac;
W zapytaniu tym, relacja PRACOWNICY jest łączona sama z sobą za pomocą operatora połączenia JOIN. Każde z wystąpień nazwy tej relacji w zapytaniu ma nadany inny alias. Można zatem traktować obydwa wystąpienia relacji PRACOWNICY jako dwie relacje: jedną, która przechowuje dane o pracownikach i drugą, która przechowuje dane o szefach. W powyższym zapytaniu relację PRACOWNICY z aliasem P traktujemy jako relację z pracownikami, a relację PRACOWNICY z aliasem S jako relację z szefami. Aby zatem znaleźć nazwiska szefów musimy połączyć relację pracowników z relacją szefów stosując warunek połączeniowy P.ID_SZEFA=S.ID_PRAC (identyfikator szefa pracownika musi być równy identyfikatorowi pracownika będącego szefem). W wyniku połączenia równościowego, przy wykorzystaniu tego warunku, otrzymujemy relację z krotkami powstałymi w wyniku sklejenia krotek pracowników z krotkami ich szefów. Za pomocą klauzuli SELECT, z relacji powstałej w wyniku połączenia wybierane są atrybuty reprezentujące nazwiska pracownika i jego szefa, i zwracane w relacji wynikowej.