SQL – Upiti u korelaciji sa podupitima

U SQL-u imamo mogućnost povezivanja sadržaja dve tabele na više načina. Do sada smo u SQL prilozima videli klasično spajanje i spajanje tabela po osnovu jednakosti. Postoji još jedan način spajanja dve ili više tabela, odnosno njihovog dovođenja u korelaciju. Radi primera, kreiraćemo dve tabele, radi postavljanja korelacije. Prva će biti tabela „Radnik“ koju ćemo kreirati sledećom instrukcijom:


CREATE TABLE Radnik (
Ime char (15),
Prezime char (20),
MBR int,
Sektor int ) ;
Potom ćemo kreirati i tabelu „Sektor“, koja će čuvati podatke o sektorima neke fiktivne firme:


CREATE TABLE Sektor (
Sektor int ,
NazSektora char (30)) ;
Nakon kreiranja tabela, dodajte po nekoliko slogova u svaku tabelu naredbom INSERT. Potom možemo kreirati i jedan korelisani podupit (corelated subquery):


SELECT *
FROM Radnik AS R
WHERE ‘Finansije’ = (SELECT NazSektora
FROM Sektor S
WHERE S.Sektor = R.Sektor);
Ovaj korelisani podupit će dati iste rezultate (vidi sliku) kao i upit spajanja po jednakosti:


SELECT Ime, Radnik, Sektor
FROM Radnik AS R, Sektor AS S
WHERE S.Sektor = R.Sektor
S.NazSektora = ‘Finansije’;
Vezu između ove dve tabele kod korelacije, smo uspostavili upotrebom elemenata iz upita u podupitu, tj. poredimo broj sektora iz tabele „S.Sektor“ (koja se nalazi u podupitu), i broj sektora koji se nalazi u tabeli „S.Radnik“ :


WHERE S.Sektor = R.Sektor
S obzirom da sektor iz tabele „Radnik“ može imati različite vrednosti za svaki slog u tabeli, podupit će se izvršavati za svaki slog iz upita.

Pratite Krstaricu na www.krstarica.com