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.

  • ๐Ÿ”— Svrha: JOIN dohvaฤ‡a povezane podatke iz dvije ili viลกe tablica usklaฤ‘ivanjem zajedniฤkog stupca, obiฤno kljuฤa.
  • ๐ŸŽฏ UNUTARNJI SPOJ: INNER JOIN vraฤ‡a samo retke u kojima je uvjet spajanja istinit u obje tablice.
  • โฌ…๏ธ LIJEVI VANJSKI SPOJEV: LEFT OUTER JOIN vraฤ‡a svaki redak iz lijeve tablice, popunjavajuฤ‡i neusklaฤ‘ene stupce desne tablice s NULL.
  • โžก๏ธ DESNI VANJSKI SPOJ: RIGHT OUTER JOIN vraฤ‡a svaki redak iz desne tablice, popunjavajuฤ‡i neusklaฤ‘ene stupce lijeve tablice s NULL.
  • ๐Ÿ”„ POTPUNI VANJSKI SPOJ: FULL OUTER JOIN vraฤ‡a sve retke iz obje tablice, koristeฤ‡i NULL gdje god uvjet nije ispunjen.
  • ๐Ÿ”‘ Ukljuฤeno stanje: Klauzula ON imenuje stupce koji povezuju tablice, najฤeลกฤ‡e par primarnog i stranog kljuฤa.

SPOJEVI u SQL Serveru: Primjeri UNUTARNJEG, LIJEVOG, DESNOG i POTPUNOG VANJSKOG SPOJEVA

ล 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 studenata s popisom stupaca za upis, ime i prezime

Tablica naknada u nastavku prikazuje iznos koji je svaki upisni broj platio:

Tablica naknada s brojevima prijema i stupcem plaฤ‡eni iznos

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:

Rezultat INNER JOIN-a prikazuje samo studente ฤiji se upis pojavljuje 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:

Rezultat LIJEVOG VANJSKOG SPOJENJA ostajeping svaki student ima NULL za neusporedive naknade

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:

Rezultat RIGHT OUTER JOIN-a ostajeping svaki redak Naknada i odgovarajuฤ‡i retci Studenti

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:

Rezultat POTPUNOG VANJSKOG SPOJENJA kombinira sve retke Studenti i Naknade s NULL vrijednostima za praznine

Pitanja i odgovori

CROSS JOIN vraฤ‡a Kartezijev produkt dviju tablica, uparujuฤ‡i svaki redak prve tablice sa svakim retkom druge. Nema uvjet ON, pa tablica s 10 i 5 redaka proizvodi 50 redaka.

Koristite SAMOSPAJANJE: tablica se navodi dva puta s razliฤitim aliasima, a zatim se spaja na povezanom stupcu kako bi se usporedili retci unutar iste tablice. Uobiฤajeno je za hijerarhijske podatke, kao ลกto je usklaฤ‘ivanje svakog zaposlenika s njegovim voditeljem.

JOIN kombinira stupce iz povezanih tablica jedan pored drugog, podudarajuฤ‡i retke prema uvjetu. UNION slaลพe rezultate dva SELECT upita okomito, dodajuฤ‡i retke. JOIN proลกiruje rezultat; UNION ga produลพuje.

Da. Klauzula ON moลพe testirati nekoliko stupaca spojenih operatorom AND, na primjer ON a.col1 = b.col1 AND a.col2 = b.col2. Sloลพeni uvjeti su uobiฤajeni kada jedan stupac ne identificira jedinstveno redak.

Klauzula ON definira kako se tablice usporeฤ‘uju i primjenjuje se tijekom izvoฤ‘enja spajanja. Klauzula WHERE naknadno filtrira kombinirani rezultat. S OUTER JOIN-ovima, pomicanje uvjeta izmeฤ‘u njih moลพe promijeniti vraฤ‡ene retke.

Da. Pisanje JOIN bez prefiksa zadano vraฤ‡a INNER JOIN, pa vraฤ‡a samo odgovarajuฤ‡e retke. Dodavanje LEFT, RIGHT ili FULL prije OUTER JOIN mijenja koji se nepodudarajuฤ‡i retci zadrลพavaju u rezultatu.

Da. GitHub kopilot moลพe izraditi INNER, LEFT, RIGHT i FULL OUTER JOIN upite iz prompta na prirodnom jeziku. Uvijek provjerite uvjet ON i vrstu spajanja kako bi skup rezultata odgovarao onome ลกto ste namjeravali.

Pomoฤ‡nici umjetne inteligencije i strojnog uฤenja predlaลพu ispravnu vrstu spajanja, generiraju uvjete ON za viลกe tablica i oznaฤavaju nedostajuฤ‡e kljuฤeve ili sluฤajne kartezijeve produkte. Takoฤ‘er mogu preporuฤiti indekse za stupce spajanja. Programer provjerava svaki prijedlog prije pokretanja.

Saลพmite ovu objavu uz: