You are on page 1of 2

SQL podupiti

Podupit je naredba SELECT ugnežđena unutar izabrane stavke... INTO, UMETANJE... INTO, Izbriši ili
AŽURIRAJ ili u drugom podupitu.

Sintaksa
Možete da koristite tri oblika sintakse da biste kreirali podupita:

Poređenje [bilo koje | SVE | NEKE] (sqlnaredba)

izraz [not] in (sqlnaredba)

Ne Postoji (sqlnaredba)

Podupit ima sledeće delove:

Deo Opis
Uporedi izraz i operator za poređenje koji poredi izraz sa rezultatima podupita.
izraz Izraz za koji se pretražuje skupa rezultat upita.
Naredba SELECT koja prati isti oblik i pravila kao i bilo koju drugu naredbu SELECT. Mora
sqlstatement
biti zatvoren u zagradama.

Napomene
Možete da koristite Podupit umesto izraza na listi polja naredbe SELECT ili u odredbi WHERE ili Address.
U podupitu koristite naredbu SELECT da biste obezbedili skupu jednu ili više određenih vrednosti koje će
se proceniti u izrazu Where ili ima.

Koristite predikat ili neki predikat, koji je sinonim za preuzimanje zapisa u glavnom upitu koji
zadovoljavaju poređenje sa bilo kojim zapisima preuzetim u podupitu. Sledeći primer vraća sve proizvode
čiju je cenu po jedinici veća od proizvoda koji se prodaje po popustu od 25 procenata ili više:

SELECT * FROM Products WHERE UnitPrice > ANY (SELECT UnitPrice FROM OrderDetails WHERE
Discount >= .25);

Predikat ALL koristite da biste preuzeli samo one zapise u glavnom upitu koji zadovoljavaju poređenje sa
svim zapisima preuzetim u podupitu. Ako ste promenili sve u prethodnom primeru, upit će vratiti samo one
proizvode čija je Jedinična cena veća od svih proizvoda koje se prodaju po popustu od 25 procenata ili više.
Ovo je mnogo restriktivnije.

Korišćenje predikata za preuzimanje samo onih zapisa u glavnom upitu za koje neki zapisi u podupitu
sadrže jednaku vrednost. Sledeći primer vraća sve proizvode sa popustom od 25 procenata ili više:
SELECT * FROM Products WHERE ProductID IN (SELECT ProductID FROM OrderDetails WHERE
Discount >= .25);

Obratno, ne možete da koristite da biste preuzeli samo one zapise u glavnom upitu za koje nijedan zapis u
podupitu ne sadrži jednaku vrednost.

Korišćenje predikata "postoji" (sa opcionalnom nerezervisanom Word) u TRUE/FALSE upoređivanja kako
bi se utvrdilo da li potupit vraća zapise.

Takođe možete da koristite pseudonima imena tabela u podupitu da biste upućivala na tabele navedene u
odredbi FROM izvan podupita. Sledeći primer vraća imena zaposlenih čiji su plate jednake ili veće od
prosečne plate svih zaposlenih koji imaju isti naslov posla. Tabeli "Zaposleni" je dat pseudonim "T1":

SELECT LastName, FirstName, Title, Salary FROM Employees AS T1 WHERE Salary >= (SELECT
Avg(Salary) FROM Employees WHERE T1.Title = Employees.Title) Order by Title;

U prethodnom primeru, kao rezervisana reč je opcionalno.

Neki potupiti su dozvoljeni u unakrsnu upitima – naročito kao predikate (one u odredbi WHERE). Podupiti
kao izlaz (oni na listi SELECT) nisu dozvoljeni u unakrsnu upitima.

You might also like