Tehnika Krstarice > Programiranje > SQL - Upiti u korelaciji sa podupitima

SQL - Upiti u korelaciji sa podupitima

21.08.2001.

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.

Preporučite ovaj članak

3.50 (glasova: 2)