SQL – Spajanje tabela po jednakosti polja

U prethodnom SQL prilogu govorili smo o spajanju tabela, tj. najprostijoj vrsti spajanja. Sledi priča o spajanju tabela po uslovu jednakosti dva ili više polja u tabelama. Za primer ćemo koristiti dve tabele: „Radnik“ sa poljima (SIF_R, IME, PREZ, SIF_S) i „Sektor“ sa poljima (SIF_S, NAZ_S). Ako sada postavimo prosti upit spajanja:


SELECT SIF_R, PREZ, NAZ_S
FROM Radnik, Sektor;

Kao rezultat dobićemo Dekartov proizvod sa kombinacijama svih slogova iz obe tabele. Isti ovaj upit smo mogli i ovako da postavimo:


SELECT R.SIF_R, R.PREZ, S.NAZ_S
FROM Radnik R, Sektor S;

Ovde zapazite da smo tabelama dodelili tzv. „promenljive domene“, koji predstavljaju simboličke reference za tabele. Tako je za tabelu „Radnik“ referenca „R“, a za tabelu „Sektor“ referenca je „S“. Promenljivu referencu možemo dodeliti bilo kojoj tabele iz upita, a referenca može da bude dugačka 128 karaktera (ovo zavisi od same implementacije SQL jezika). Reference koristimo i u „SELECT“ klauzuli i u „FROM“ klauzuli, i tada za navođenje određenog polja određene tabele koristimo, prvo referencu tabele pa naziv samog polja:


referenca.polje

Osnovna svrha korišćenja referenci je povećanje čitljivosti upita, koja možda nije bitna u našem primeru, ali zamislite da vršite spajanje četiri tabele sa više polja.

Vratimo se spajanju tabela. Spajanje tabela po uslovu jednakosti se vrši da bi se spojile iste vrednosti u istim (zajedničkim) poljima dve tabele. Pri tome polja tabela moramo tako definisati da se polja jedne tabele pojavljuju u drugoj tabeli. Polje u prvoj tabali može imati osobinu primarnog ključa, i tada je polje u povezanoj tabeli strani ključ. U našem primeru, polje SIF_S (šifra sektora) u tabeli „Sektor“ predstavlja primarni ključ, a istovremeno u tabeli „Radnik“ strani ključ. Sada ćemo izvršiti spajanje ove dve tabele po uslovu jednakosti šifre sektora. Upitom ćemo izlistati: šifru radnika, njegovo ime i prezime, i naziv sektora u kome radi. SQL upit će glasiti:


SELECT R.SIF_R, R.PREZ, S.NAZ_S
FROM Radnik R, Sektor S;
WHERE R.SIF_S=S.SIF_S

Kao rezultat izlistaće se podaci o radnicima i nazivi sektora u kome rade, dobijeni preko šifre sektora u tabeli „Radnik“.

Pratite Krstaricu i preko mobilne aplikacije za Android i iPhone.

programiranje
Komentari (0)
Dodaj komentar