zmień kontrast czcionka: A A A
rss angielski
jesteś w Encyklopedii SQL >> OUTER JOIN

OUTER JOIN

OUTER JOIN zwraca wszystkie wiersze jednej tabeli nawet jeśli nie wszystkie są dopasowane z drugą tabelą. Wyróżnia się
LEFT JOIN - zwraca wszystkie wiersze lewej tabeli nawet jeśli nie są dopasowane z prawą tabelą
RIGHT JOIN - zwraca wszystkie wiersze prawej tabeli nawet jeśli nie są dopasowane z lewą tabelą
W niektórych bazach danych powyższe nazwy złączeń są znane jako odpowiednio LEFT OUTER JOIN i RIGHT OUTER JOIN

Składnia


SELECT `nazwa_kolumny1`,`nazwa_kolumny2`
FROM `nazwa_tabeli1`
LEFT lub RIGHT JOIN `nazwa_kolumny2`
ON `nazwa_tabeli1`.`nazwa_kolumny1`=`nazwa_tabeli2`.`nazwa_kolumny2`

Przykład na LEFT JOIN

Wyświetl imię i nazwisko osób z tabeli `osoby` wraz z wartością zamówienia z tabeli `zamowienie`

idimięnazwiskowiek
1PawełKowalski3
2PiotrJanik7
3MichałNowak13

idwartosc_zamowieniaid_osoby
11001
22002
31002
410020

zapytanie


SELECT *
FROM `osoby`
LEFT JOIN `zamowienia`
ON `zamowienia`.`id_osoby`=`osoby`.`id`

rezultat

idimięnazwiskowiekidwartosc_zamowieniaid_osoby
1PawełKowalski311001
2PiotrJanik722002
2PiotrJanik731002
3MichałNowak13NULLNULLNULL

W Oracle używa się znaku (+) po słowie kluczowym WHERE po drugiej stronie nazwy tablicy dla której chcemy wyświetlić wszystkie wiersze. Przykładowo kod z tego przykładu będzie wyglądał następująco :

    
    SELECT *
    FROM `osoby`,`zamowienia`
    WHERE `osoby`.`id`=`zamowienia`.`id_osoby`(+)
    
    

Przykład na RIGHT JOIN

Wyświetl wszystkie zamówienia z imieniem i nazwiskiem klienta z tabeli `osoby`

idimięnazwiskowiek
1PawełKowalski3
2PiotrJanik7
3MichałNowak13

idwartosc_zamowieniaid_osoby
11001
22002
31002
410020

zapytanie


SELECT *
FROM `osoby`
RIGHT JOIN `zamowienia`
ON `zamowienia`.`id_osoby`=`osoby`.`id`

rezultat

idwartosc_zamowieniaid_osobyidimięnazwiskowiek
110011PawełKowalski3
220022PiotrJanik7
310022PiotrJanik7
410020NULLNULLNULLNULL

[ wróć na górę strony ]