1. Šta je podupit (subquery)?

Podupit je upit unutar drugog SQL upita.

Primer:

SELECT *
FROM Zaposleni
WHERE Plata >
(
    SELECT AVG(Plata)
    FROM Zaposleni
);

Unutrašnji upit:

SELECT AVG(Plata)
FROM Zaposleni

izračuna prosečnu platu.

Spoljašnji upit prikazuje zaposlene koji imaju veću platu od proseka.


2. Vrste podupita

Podupit može vratiti:

A) Jednu vrednost (single-row subquery)

Primer:

SELECT MAX(Plata)
FROM Zaposleni;

Vrati samo jednu vrednost.

Na primer:

95000

Tada možemo koristiti obične operatore:

=
>
<
>=
<=
<>

Primer:

WHERE Plata >
(
    SELECT AVG(Plata)
    FROM Zaposleni
)

B) Više vrednosti (multi-row subquery)

Primer:

SELECT Plata
FROM Zaposleni
WHERE OdeljenjeID = 2;

Može vratiti:

45000
52000
70000

Tada se ne mogu koristiti obični operatori poređenja.

Pogrešno:

WHERE Plata =
(
    SELECT Plata
    FROM Zaposleni
)

Jer postoji više rezultata.


3. Operator IN

Operator IN proverava da li vrednost pripada skupu rezultata.

Primer:

SELECT *
FROM UCENICI
WHERE RazredID IN
(
    SELECT ID
    FROM RAZRED
);

Značenje:

„Prikaži učenike čiji razred postoji u listi vraćenoj podupitom.”


4. Operator ANY

ANY znači:

bar jedna vrednost

Primer:

SELECT *
FROM Zaposleni
WHERE Plata > ANY
(
    SELECT Plata
    FROM Zaposleni
    WHERE OdeljenjeID = 3
);

Značenje:

Plata mora biti veća od barem jedne plate.


5. Operator SOME

SOME je praktično isto što i ANY.

Primer:

WHERE Plata > SOME (...)

Radi isto kao:

WHERE Plata > ANY (...)

6. Operator ALL

ALL znači:

sve vrednosti

Primer:

SELECT *
FROM Zaposleni
WHERE Plata > ALL
(
    SELECT Plata
    FROM Zaposleni
    WHERE OdeljenjeID = 2
);

Značenje:

Plata mora biti veća od svih plata iz podupita.



 

Operator Može sa više vrednosti? Namena
ALL poređenje sa svim vrednostima
ANY poređenje sa bar jednom vrednošću
SOME isto kao ANY
IN provera da li pripada skupu
      
     

 

Last modified: Tuesday, 9 June 2026, 8:41 AM