Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 28

Spajanje tablica

Uvod

 Do sada smo naučili koristiti osnovni dio


SELECT naredbe, a izvor podataka nam je uvijek
bila jedna tablica
 Često se podaci koji nam trebaju nalaze u više
tablica, a povezane su stranim ključevima
 PRIMJER: kako dohvatiti sve gradove iz države pod nazivom
”Hrvatska”?

Uvod
Uvod
 Spajanje se koristi kada za izvor podataka treba dohvaćati podatke iz dvije ili više tablica
 Vrste spajanja su
 Unutarnje spajanje (INNER JOIN)
 Vanjsko spajanje:
 Lijevo vanjsko spajanje (LEFT OUTER JOIN)
 Desno vanjsko spajanje (RIGHT OUTER JOIN)
 Puno vanjsko spajanje (FULL OUTER JOIN)
 Unakrsno spajanje (CROSS JOIN)
 Spajanje tablice sa samom sobom

 U jednom spajanju uvijek sudjeluju dvije tablice osim ako se radi o involuiranoj vezi tj.
spajanju tablice sa samom sobom
Grafički
prikaz spajanja
Unutarnje spajanje tablica
INNER JOIN

 Unutarnje spajanje se koristi najčešće od svih spajanja


 Logički opis spajanje je sljedeći
 Zadaje se uvjet spajanja: dva stupca iz dvije tablice koja sudjeluju u spajanju i odabire se
operator spajanja
 Najčešće je to operator „=” (equi-join)
 Uvjet spajanja može biti bilo što ili bilo koja kombinacija operatora npr. AND, OR, …
 Za svaki redak u prvoj tablici DBMS pronalazi sve retke u drugoj koji odgovaraju uvjetu spajanja
 Rezultat koraka 2 je spojena tablica koja sadrži uniju redaka iz tablica koje smo spajali i služi kao
izvor podataka

 •Kod unutrašnjeg spajanja nije bitan redosljed tablica


Unutarnje spajanje tablica
SQL Sintaksa

 Sintaksa unutarnjeg spajanja je sljedeća

 Ako se koristi najčešći oblik spajanja („=”) onda je sintaksa sljedeća

 Stupac1 i stupac2 su gotovo uvijek primarni i strani ključ u tablicama koje se spajaju
Unutarnje
spajanje tablica
Primjer
Unutarnje spajanje tablica
Primjer

 Kako dohvatiti sve gradove iz države pod nazivom „Hrvatska” korištenjem unutrašnjeg spajanja?
 Unutarnje spajanje vraća samo one retke koji se nalaze u prvoj tablici te
imaju odgovarajući redak u drugoj tablici i obrnuto

 Lijevo vanjsko spajanje radi na sljedeći način


 Vrati sve retke kao i unutrašnje spajanje
 Vrati sve retke iz prve tablice koji nisu spojeni u koraku 1. pri tome da Lijevo vanjsko
su vrijednosti stupaca druge tablice jednake NULL
spajanje tablica
 Sintaksa je ista kao i za unutrašnje spajanje samo se umjesto INNER JOIN
koristi LEFT OUTER JOIN
LEFT OUTER JOIN
 Bitno je paziti na redosljed tablica
 Sintaksa lijevog vanjskog spajanja je sljedeća

Lijevo vanjsko
spajanje tablica  Koristi se u situacijama kada treba odgovoriti na pitanja tipa
SQL Sintaksa  Koji studenti nisu izašli na ispit?
 Koji kupac nije kupio niti jedan proizvod?
 …?

 Najčešće se koristi u kombinaciji sa operatorom IS NULL


Lijevo vanjsko
spajanje tablica
Primjer
 Dohvatite sve kupce koji nikad nisu kupili niti jedan proizvod

Lijevo vanjsko
spajanje tablica
Primjer
 Desno vanjsko spajanje je istovjetno lijevom vanjskom
spajanju
 Desno vanjsko spajanje radi na sljedeći način
 Vrati sve retke kao i unutrašnje spajanje
 Vrati sve retke iz druge tablice koji nisu spojeni u koraku
Desno vanjsko 1. pri tome da su vrijednosti stupaca prve tablice jednake
spajanje tablica NULL
RIGHT OUTER  Sintaksa je ista kao i za lijevo vanjsko spajanje samo se
JOIN umjesto LEFT OUTER JOIN koristi RIGHT OUTER JOIN
 Bitno je paziti na redosljed tablica
 Ako se zamjeni redosljed tablica dobije se lijevo vanjsko
spajanje
 Sintaksa desnog vanjskog spajanja je sljedeća

Desno vanjsko
spajanje
tablica SQL
 Rijetko se koristi jer je istovjetno LEFT OUTER JOIN-u
sintaksa  Dakle sve što se može napraviti sa jednim može se i sa drugim
ako se zamjeni redosljed tablica koje se spajaju
Desno vanjsko
spajanje
tablica Primjer
 Puno vanjsko spajanje radi na sljedeći način
 Vrati sve retke kao i unutrašnje spajanje
 Vrati sve retke iz prve tablice koji nisu spojeni u koraku 1.

Puno vanjsko pri tome da su vrijednosti stupaca druge tablice jednake


NULL
spajanje  Vrati sve retke iz druge tablice koji nisu spojeni u koraku

tablica FULL 1. pri tome da su vrijednosti stupaca prve tablice jednake


NULL
OUTER JOIN  U sintaksi se koristi naredba FULL OUTER JOIN, a
redosljed tablica je nebitan
Puno vanjsko
spajanje tablica
Primjer
 Unakrsno spajanje ima dva načina rada
 Ako ne postoji WHERE uvjet, unakrsno spajanje je
Kartezijev produkt

Unakrsno  Kartezijev produkt spaja svaki redak iz prve


spajanje tablica tablice sa svakim retkom iz druge tablice
 Ako postoji definiran WHERE uvjet unakrsno
CROSS JOIN spajanje se ponaša kao unutarnje spajanje

 U sintaksi se koristi naredba CROSS JOIN


Unakrsno
spajanje tablica
Primjer
Unakrsno
spajanje tablica
Primjer
 Spajanje tablice sa samom sobom je normalno
spajanje kao i svako drugo samo što se ne
Spajanje tablice spajaju dvije različite tablice već se tablica
sa samom spaja sama sa sobom
sobom  Ovo spajanje radi kao i svako do sada, a kod
SELF JOIN sintakse je obavezno koristiti alijase (AS)
 Za dohvaćanje podataka iz hijerarhijski strukturirane tablice
mora se koristiti samospajanje

Spajanje tablice
sa samom
sobom
Primjer
 Za svaku kategoriju je potrebno dohvatiti koja je njegova
nadkategorija tj. njen naziv

Spajanje tablice
sa samom
sobom
Primjer
 Ako je potreba spojiti više tablica što se nerijetko i
događa, spajanje se izvršava po sljedećem principu
1. Prvo se spajaju prva i druga tablica
2. Tablica dobivena kao rezultat koraka 1 se spaja sa
trećom navedenom tablicom
Spajanje više 3. Tablica dobivena kao rezultat koraka 2 se spaja sa
tablica četvrtom navedenom tablicom
4. Postupak se ponavlja dok se ne iscrpe sve navedeme
tablice

 Moguće je koristiti bilo koje kombinacija tipova spajanja


 Dohvatite sve ime, prezime i naziv grada svih kupaca koji nikad
nisu kupili niti jedan proizvod

Spajanje više
tablica
Primjer
 Operator UNION se koristi za kombiniranje dvije ili više SELECT
naredbi
 SELECT naredbe moraju vraćati isti broj stupaca, koji moraju
biti istog tipa podatka
 Osnovna sintaksa za korištenje UNION operatora je

Operator
UNION

 Ako se koristi ALL rezultat će sadržavati duple retke


Operator
UNION
Primjer

You might also like