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`
id | imię | nazwisko | wiek |
1 | Paweł | Kowalski | 3 |
2 | Piotr | Janik | 7 |
3 | Michał | Nowak | 13 |
id | wartosc_zamowienia | id_osoby |
1 | 100 | 1 |
2 | 200 | 2 |
3 | 100 | 2 |
4 | 100 | 20 |
zapytanie
SELECT *
FROM `osoby`
LEFT JOIN `zamowienia`
ON `zamowienia`.`id_osoby`=`osoby`.`id`
rezultat
id | imię | nazwisko | wiek | id | wartosc_zamowienia | id_osoby |
1 | Paweł | Kowalski | 3 | 1 | 100 | 1 |
2 | Piotr | Janik | 7 | 2 | 200 | 2 |
2 | Piotr | Janik | 7 | 3 | 100 | 2 |
3 | Michał | Nowak | 13 | NULL | NULL | NULL |
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`
id | imię | nazwisko | wiek |
1 | Paweł | Kowalski | 3 |
2 | Piotr | Janik | 7 |
3 | Michał | Nowak | 13 |
id | wartosc_zamowienia | id_osoby |
1 | 100 | 1 |
2 | 200 | 2 |
3 | 100 | 2 |
4 | 100 | 20 |
zapytanie
SELECT *
FROM `osoby`
RIGHT JOIN `zamowienia`
ON `zamowienia`.`id_osoby`=`osoby`.`id`
rezultat
id | wartosc_zamowienia | id_osoby | id | imię | nazwisko | wiek |
1 | 100 | 1 | 1 | Paweł | Kowalski | 3 |
2 | 200 | 2 | 2 | Piotr | Janik | 7 |
3 | 100 | 2 | 2 | Piotr | Janik | 7 |
4 | 100 | 20 | NULL | NULL | NULL | NULL |
[ wróć na górę strony ]