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.