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