Typy złączeń

edytuj

Wewnę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

edytuj

O 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

edytuj

Złą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

edytuj

Konstrukcja 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

edytuj

Złą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

edytuj

Złą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

edytuj

Opracowanie 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
  1. PATRZ SQL