|
|
Naredba JOIN
- SQL naredba JOIN kombinira zapise iz dvije tablice pomocu vrijednosti atributa koje su im zajednicke. Rezultat tog kombiniranja je nova, privremena tablica, tzv. joined table. Osnovni tipovi JOIN naredbe su INNER JOIN i OUTER JOIN (OUTER JOIN se djeli na LEFT OUTER JOIN, krace LEFT JOIN i RIGHT OUTER JOIN, krace RIGHT JOIN).
- Zajednicke vrijednosti atributa pomocu kojih kombiniramo tablice su kljuc jedne tablice koji je strani kljuc u drugoj tablici koju kombiniramo.
- Svaki upit koji ostvarimo JOIN naredbom, moze se dobiti i nekom od ranije obradjivanih metoda kombiniranja dvije tablice.
- Djelovanje JOIN naredbe ilustrirat cemo primjerima koji koriste slijedece dvije tablice:
Zaposlenici:
ID_zaposlenika |
Ime |
0111 |
Jura Juric |
0112 |
Pero Peric |
0113 |
Stef Stefic |
0114 |
Pajo Patak |
Narudjbe:
ID_proizvoda |
Proizvod |
ID_zaposlenika |
234 |
Printer |
0111 |
657 |
Stol |
0113 |
865 |
Stolica |
0113 |
Tablice se odnose na zaposlenike neke firme koji narucuju uredski materijal. U tablici "Zaposlenici" imamo kljuc "ID_zaposlenika" koji je ujedno i strani kljuc u tablici "Narudjbe".
INNER JOIN:
Sintaksa:
SELECT atribut1, atribut2, atribut3 (koliko vec atributa iz prve ili druge tablice zelimo)
FROM prva_tablica INNER JOIN druga_tablica
ON kljuc_prve_tablice = strani_kljuc_druge_tablice; |
Primjer: Koji zaposlenici su narucili uredski materijal i sto su narucili?
SELECT Ime,Proizvod
FROM Zaposlenici INNER JOIN Narudjbe
ON Zaposlenici.ID_zaposlenika=Narudjbe.ID_zaposlenika; |
Rezultat upita:
Ime |
Proizvod |
Jura Juric |
Printer |
Stef Stefic |
Stol |
Stef Stefic |
Stolica |
INNER JOIN ispisuje sve retke obje tablice u kojima smo pronasli "match" (tj koje smo uspjeli povezati istom vrijednosti atributa). Ostale retke ne ispisuje.
LEFT JOIN:
Sintaksa:
SELECT atribut1, atribut2, atribut3 (koliko vec atributa iz prve ili druge tablice zelimo)
FROM prva_tablica LEFT JOIN druga_tablica
ON kljuc_prve_tablice = strani_kljuc_druge_tablice; |
Primjer: Ispisite sve zaposlenike, i ako su nesto narucili, onda i njihove narudjbe.
SELECT Ime,Proizvod
FROM Zaposlenici LEFT JOIN Narudjba
ON Zaposlenici.ID_zaposlenika=Narudjbe.ID_zaposlenika; |
Rezultat upita:
Ime |
Proizvod |
Jura Juric |
Printer |
Pero Peric |
|
Stef Stefic |
Stol |
Stef Stefic |
Stolica |
Pajo Patak |
|
LEFT JOIN ispisuje sve retke kao i INNER JOIN te jos dodatne retke (sve preostale retke) iz prve tablice, koji nemaju "matcheve" s drugom tablicom.
RIGHT JOIN:
Sintaksa:
SELECT atribut1, atribut2, atribut3 (koliko vec atributa iz prve ili druge tablice zelimo)
FROM prva_tablica RIGHT JOIN druga_tablica
ON kljuc_prve_tablice = strani_kljuc_druge_tablice; |
Primjer: Ispisite popis svih narudjbi i tko ih je narucio (ako narucioc postoji).
SELECT Ime,Proizvod
FROM Zaposlenik RIGHT JOIN Narudjba
ON Zaposlenici.ID_zaposlenika=Narudjbe.ID_zaposlenika; |
Rezultat upita:
Ime |
Proizvod |
Jura Juric |
Printer |
Stef Stefic |
Stol |
Stef Stefic |
Stolica |
RIGHT JOIN ispisuje sve retke kao i INNER JOIN te jos dodatne retke (sve preostale retke) iz druge tablice, koji nemaju "matcheve" s prvom tablicom. Dakle, da je postojao neki proizvod kojeg nitko nije narucio, i on bi bio ispisan.
| |