Szymonzakrzewski
Typy złączeń
edytujWewnętrzne (inner) są domyślnym typem złączeń. Wyniki tych zapytań zawierają jedynie wiersze spełniające warunek.
Iloczyn kartezjański (Cross join) Samozłączenie (Self Join) Równozłączenie (Equi-join) Naturalne (Natural Join) Antyzłączenia (Anti join) Częściowe (Semi Join)
Zewnętrzne(outer)
Left outer Join Right outer Join Full outer Join
Złączenie typu Self JOIN
edytujO złączeniu Self JOIN mówimy, gdy po lewej i prawej stronie złączenia występuje ta sama tabela. W tym typie złączeń za niezbędne uważa się użycie aliasów.
SELECT d1.nazwa, d2.nazwa
FROM dzialy d1 JOIN dzialy d2
USING (adres)
WHERE d1.nazwa != d2.nazwa;
SELECT d1.nazwa, d2.nazwa
FROM dzialy d1, dzialy d2
WHERE d1.adres = d2.adres
AND d1.nazwa != d2.nazwa;
Złączenie typu CROSS JOIN
edytujZłączenie CROSS JOIN jest to tzw. złączenie krzyżowe, którego ogólna postać wygląda następująco:
SELECT kolumna1, kolumna2, ..., kolumnaN
FROM tabela1 CROSS JOIN tabela2
gdzie N oznacza ostatnią kolumnę tabeli.
Wykonuje ono iloczyn kartezjański na podstawie łączonych tabel, inaczej mówiąc łączy każdy wiersz tabeli tabela1 z każdym wierszem tabeli tabela2. Jest ona odpowiednikiem znanej instrukcji:
SELECT kolumna1, kolumna2, ...,kolumnaN
FROM tabela1, tabela2
Złączenie typu INNER JOIN
edytujKonstrukcja typu INNER JOIN jest złączeniem warunkowym o postaci:
SELECT kolumna1, kolumna2, ...,kolumnaN
FROM tabela1 [INNER] JOIN tabela2
ON wyrażenie_warunkowe
W zapytaniu słowo INNER jest opcjonalne.
W wyniku tego złączenia pojawią się tylko te wiersze z tabela tabela1 i tabela2, które spełnią warunki wymienionie po klauzuli ON.
Jest ona odpowiednikiem znanej instrukcji:
SELECT kolumna1, kolumna2, ...,kolumnaN
FROM tabela1, tabela2, ...,tabelaN
WHERE warunki
Złączenie typu LEFT OUTER JOIN
edytujZłączenie typu LEFT OUTER JOIN pozwala nam na uwzględnienie w wyniku danych, które nie posiadają swoich odpowiedników w złączanych tabelach. Oznacza to, że jeśli w pierwszej tabeli pojawiają się wiersze, które nie posiadają odpowiedników w drugiej tabeli to zostaną wzięte pod uwagę podczas złączenia ale puste kolumny zostaną wypełnione wartościami NULL.
Konstrukcja typu LEFT OUTER JOIN:
SELECT kolumna1, kolumna2, ...,kolumnaN
FROM tabela1 LEFT [OUTER] JOIN tabela2
ON wyrażenie_warunkowe
Słowo OUTER jest tutaj opcjonalne.
Złączenie typu RIGHT OUTER JOIN
edytujZłączenie typu RIGHT OUTER JOIN działa analogicznie do LEFT OUTER JOIN ale w tabeli wynikowej uwzględnia wiersze z drugiej tabeli, które nie posiadają odpowiedników w pierwszej.
Konstrukcja typu RIGHT OUTER JOIN:
SELECT kolumna1, kolumna2, ...,kolumnaN
FROM tabela1 RIGHT [OUTER] JOIN tabela2
ON wyrażenie_warunkowe
Słowo OUTER jest tutaj opcjonalne.
Bibliografia
edytujOpracowanie na podstawie książki oraz własne spostrzeżenia.
PostgreSQL 8.3
| nazwisko = Lis
| imię = Marcin
| tytuł = PostgreSQL 8.3
| wydawca = Helion
| miejsce = Gliwice
| rok = 2008
| strony = 188
| isbn = 978-83-246-0859-1
Linki zewnętrzne
edytuj- PATRZ SQL