JOIN-ovi u SQL Serveru: Vrste s primjerima
โก Pametni saลพetak
SPOJEVI u SQL Serveru kombiniraju retke iz dvije ili viลกe tablica na temelju povezanog stupca, koristeฤi spojeve INNER, LEFT OUTER, RIGHT OUTER i FULL OUTER za kontrolu koji se odgovarajuฤi i nepodudarajuฤi retci pojavljuju u rezultatu.

ล to su spojevi (joinovi) u SQL Serveru?
Podaci se mogu dohvatiti iz viลกe tablica pomoฤu naredbe JOIN u SQL ServerJOIN kombinira retke iz dvije ili viลกe tablica na temelju povezanog stupca izmeฤu njih, najฤeลกฤe Osnovni kljuฤ usklaฤeno s strani kljucU SQL Serveru postoje uglavnom ฤetiri vrste JOIN-ova:
- UNUTARNJE SPAJANJE / jednostavno spajanje
- LIJEVI VANJSKI SPOJ / LIJEVI SPOJ
- DESNI VANJSKI SPOJ / DESNI SPOJ
- POTPUNI VANJSKI SPOJ
Donja tablica saลพima koje retke vraฤa svaki tip JOIN-a:
| Vrsta PRIDRUลฝIVANJA | Vraฤeni retci |
| INNER JOIN | Samo retci u kojima se uvjet spajanja podudara u obje tablice. |
| LIJEVI VANJSKI SPOJ | Svi retci iz lijeve tablice, plus odgovarajuฤi retci desne tablice (NULL vrijednosti tamo gdje se niลกta ne podudara). |
| DESNI VANJSKI SPOJ | Svi retci iz desne tablice, plus odgovarajuฤi retci iz lijeve tablice (NULL vrijednosti tamo gdje se niลกta ne podudara). |
| POTPUNI VANJSKI SPOJ | Svi retci iz obje tablice, s NULL vrijednostima gdje god uvjet nije ispunjen. |
U donjim primjerima koriste se dva tablice, Studenti i Naknada, spojeni u zajedniฤkom stupcu za prijem. Svaki odjeljak objaลกnjava jednu vrstu JOIN-a s njezinom sintaksom, obraฤenim upitom i rezultatom.
INNER JOIN
Ova vrsta SQL Server JOIN vraฤa retke iz svih tablica u kojima je uvjet spajanja istinit. Sintaksa je sljedeฤa:
SELECT columns FROM table_1 INNER JOIN table_2 ON table_1.column = table_2.column;
Za demonstraciju ฤemo koristiti sljedeฤe dvije tablice. Tablica Studenti u nastavku navodi svakog studenta i broj upisa:
Tablica naknada u nastavku prikazuje iznos koji je svaki upisni broj platio:
Sljedeฤa naredba demonstrira INNER JOIN u SQL Serveru s primjerom:
SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid FROM Students INNER JOIN Fee ON Students.admission = Fee.admission
Naredba vraฤa sljedeฤi rezultat, prikazujuฤi samo brojeve prijema prisutne u obje tablice:
Moลพemo vidjeti koji su studenti platili ลกkolarinu. Koristili smo stupac sa zajedniฤkim vrijednostima u obje tablice, a to je stupac za upis.
LIJEVI VANJSKI SPOJ
Ova vrsta spajanja vraฤa sve retke iz lijeve tablice plus zapise u desnoj tablici s odgovarajuฤim vrijednostima. Na primjer:
SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid FROM Students LEFT OUTER JOIN Fee ON Students.admission = Fee.admission
Kod vraฤa sljedeฤi rezultat, keeping svaki student ฤak i kada se ne podudaraju podaci o ลกkolarini:
Zapisi bez odgovarajuฤih vrijednosti zamjenjuju se s NULL u odgovarajuฤim stupcima.
DESNI VANJSKI SPOJ
Ova vrsta spajanja vraฤa sve retke iz desne tablice i samo one s odgovarajuฤim vrijednostima u lijevoj tablici. Na primjer:
SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid FROM Students RIGHT OUTER JOIN Fee ON Students.admission = Fee.admission
Naredba za OUTER JOINS u SQL Serveru vraฤa sljedeฤi rezultat:
Razlog za gornji izlaz je to ลกto su svi retci u tablici naknada dostupni u tablici studenti kada se podudaraju u stupcu za prijem.
POTPUNI VANJSKI SPOJ
Ova vrsta spajanja vraฤa sve retke iz obje tablice, s NULL vrijednostima gdje god uvjet JOIN nije istinit. Na primjer:
SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid FROM Students FULL OUTER JOIN Fee ON Students.admission = Fee.admission
Kod vraฤa sljedeฤi rezultat za upite FULL OUTER JOIN u SQL, kombinirajuฤi svaki redak iz obje tablice:






