Kombinira zapise iz dvije tablice kad god se u zajedničkom polju nalaze podudarne vrijednosti.
Sintaksa
FROM tablica1 INNER JOIN tablica2 ON tablica1.polje1operatorusporedbe tablica2.polje2
Operacija INNER JOIN sastoji se od sljedećih dijelova:
Dio |
Opis |
tablica1, tablica2 |
Nazivi tablica iz kojih se spajaju zapisi. |
polje1, polje2 |
Nazivi spojenih polja. Ako nisu numerička, polja moraju biti iste vrsta podatka i sadržavati istovrsne podatke, ali ne moraju imati isti naziv. |
operatorusporedbe |
Bilo koji relacijski operator usporedbe: "=," "<," ">," "<=," ">=," ili "<>." |
Napomene
Operaciju INNER JOIN možete koristiti u bilo kojem uvjetu FROM. To je najčešća vrsta spoja. Unutarnji spojevi kombiniraju zapise iz dvije tablice kad god se u polju zajedničkom objema tablicama nalaze podudarne vrijednosti.
Da biste odabrali sve zaposlenike u svakom odjelu, upotrijebite INNER JOIN s tablicama Odjeli i Zaposlenici. Da biste odabrali sve odjele (čak i u nekima nema dodijeljenih zaposlenika) ili sve zaposlenike (čak i ako neki nisu dodijeljeni nijednom odjelu), možete upotrijebiti operaciju LEFT JOIN ili RIGHT JOIN da biste stvorili vanjsko spajanje.
Ako pokušate spojiti polja s podacima dopisa ili OLE objekta, doći će do pogreške.
Spojiti možete bilo koji par numeričkih polja sličnih vrsta. Spajati možete, na primjer, u poljima s vrstama podataka AutoNumber i Long jer su to slične vrste podataka. No ne možete spajati polja s vrstama podataka Single i Double.
U sljedećem primjeru objašnjava se spajanje tablica Kategorije i Proizvodi u polju IDKategorije.
SELECT CategoryName, ProductName
FROM Categories INNER JOIN Products ON Categories.CategoryID = Products.CategoryID;
U prethodnom je primjeru IDKategorije spojeno polje, ali nije uvršteno u izlaz upita jer nije dodano u naredbu SELECT. Da biste dodali spojeno polje, u naredbu SELECT dodajte naziv polja u ovom slučaju Categories.CategoryID.
Pomoću sljedeće sintakse povezati možete i nekoliko uvjeta ON u naredbi JOIN:
SELECT polja
FROM tablica1 INNER JOIN tablica2 ON tablica1.polje1operatorusporedbetablica2.polje1 AND ON tablica1.polje2operatorusporedbetablica2.polje2) OR ON tablica1.polje3operatorusporedbetablica2.polje3)];Naredbe JOIN možete ugnijezditi pomoću sljedeće sintakse:
SELECT polja
FROM tablica1 INNER JOIN (tablica2 INNER JOIN [( ]tablica3 [INNER JOIN [( ]tablicax [INNER JOIN ...)] ON tablica3.polje3operatorusporedbetablicax.poljex)] ON tablica2.polje2operatorusporedbetablica3.polje3) ON tablica1.polje1operatorusporedbetablica2.polje2;Operacije LEFT JOIN ili RIGHT JOIN mogu biti ugniježđene unutar operacije INNER JOIN, ali INNER JOIN ne može biti ugniježđena unutar operacija LEFT JOIN ili RIGHT JOIN.