Često može da se desi da treba da se koristi više različitih tabela u jednom upitu. Pošto u ovom predmetu radimo samo sa relacionim bazama podataka, to znači da su tabele koje se koriste u upitima najčešće i međusobno povezane na neki način.

Prilikom kreiranja tabela, nazivi kolona u njima zavise od sadržaja tabele, i često se dešava da se u različitim tabelama pojavljuju isti nazivi kolona.

Kada iz više tabela biramo kolone koje imaju ista imena (na primer id, naziv, ime), baza ne zna automatski iz koje tabele želimo da uzmemo podatak.
Da bismo to rešili, koristimo kvalifikovane nazive kolona.


1. Šta su kvalifikovani nazivi kolona

Kvalifikovani naziv kolone je naziv kolone kojem je ispred dodato ime tabele (ili njen alias), razdvojeno tačkom.

Opšti oblik:

ime_tabele.naziv_kolone

Ovim se jasno određuje iz koje tabele i iz koje kolone u njoj nam trebaju podaci.


2. Zašto koristimo kvalifikovane nazive kolona

Najčešći razlog za korišćenje kvalifikovanih naziva kolona je kada u upitu učestvuje više tabela koje imaju iste nazive kolona,

Međutim, čak i kada to nije slučaj, često ih koristimo i da bismo izbegli nejasnoće i greške u izvršavanju SQL upita, kao i radi veće čitljivosti  - na primer da bi skratili kucanje - umesto OpisProizvoda.info da npr pišemo o.Info ...


3. Primer

Imamo dve tabele:

Tabela Vlasnik

vlasnikID ime prezime  
1 Ana Petrović  
2 Marko Jovanović  

Tabela Pas

pasID ime vlasnikID
1 Sima 2
2 Cezar 1

4. Upit bez kvalifikovanih naziva

Ako pokušamo sledeći upit:

SELECT pasID, ime, ime
FROM Pas, Vlasnik;

Baza će prijaviti grešku ili vratiti pogrešan rezultat, jer ne zna iz koje tabele treba da uzme kolonu ime (pojavljuje se u obe tabele).


5. Upit sa kvalifikovanim nazivima

Ispravna verzija upita je:

SELECT Vlasnik.ime, Vlasnik.prezime, Pas.Ime
FROM Vlasnik, Pas
WHERE Vlasnik.vlasnikID = pas.vlasnikID;

Ovde smo jasno naveli iz koje tabele dolazi svaka kolona.
Na primer:

  • Ucenik.ime → kolona ime iz tabele Ucenik

  • Odeljenje.naziv → kolona naziv iz tabele Odeljenje


6. Korišćenje aliasa (nadimaka) tabela

Da bismo olakšali pisanje, često dodeljujemo alias (nadimak) tabelama.

SELECT V.ime, V.prezime, P.Ime
FROM Vlasnik V, Pas P
WHERE V.vlasnikID = P.vlasnikID;
ili
SELECT V.ime, V.prezime, P.Ime
FROM Vlasnik AS V, Pas AS P
WHERE V.vlasnikID = P.vlasnikID;

U većini sistema za upravljanje podataka može a ne mora da se koristi AS prilikom kreiranja aliasa tabela!

Alias čini upit kraćim i preglednijim, a dalje kvalifikovanje kolona ostaje isto:

  • v.ime → iz tabeleVlasnik

  • p.ime → iz tabele Pas


7. Prednosti korišćenja kvalifikovanih naziva
  •  Sprečavaju greške u upitima
  •  Povećavaju čitljivost koda
  •  Omogućavaju tačno određivanje kolone kod spajanja tabela
  •  Posebno su korisni u složenijim upitima sa više tabela

8. Vežbe

Za potrebe vežbi koristićemo bazu IzlozbaPasa :

    Ako je nemate, tada desni klik i sačuvajte fajl za kreitanje i popunjavanje baze  KreirajBazuIzlozbaPasa.sql

Otvorite ovaj sql fajl i izvršite upit (Sql Server Management Studio)

Ispisati imena pasa korišćenjem kvalifikovanih naziva kolona i alijasa tabela

select P.Ime 
from Pas P;

Ispisati nazive rasa korišćenjem kvalifikovanih naziva kolona i alijasa tabela

select Rasa.NazivRase
from Rasa;

Za svakog psa ispisati ime i naziv rase - ovde nam treba ime iz tabele Pas i NazivRasa iz tabele Rasa

select Pas.Ime, Rasa.NazivRase
from Pas, Rasa;

Dodatno objašnjenje rezultata ovog primera (i zašto imamo mnogo više redova u rezutatu nego što smo očekivali):

Kada se navedu samo tabele iz kojih nam trebaju podaci, razdvojene zarezom i bez ikakvih dodatnih uslova tada je u pitanju DEKARTOV PROIZVOD tabela - kobbinacija svake kolone prve tabele i svake kolone drige tabele, pa broj rezultujućih redova bude na kraju broj redova prve tabele pomnožen sa brojem redova druge tabele. Češće se koristi originalni naziv na engleskon jeziku : CROSS JOIN.

Pošto su ove dve tabele povezane - u obe ima kolona RasaID: u tabeli Rasa to jedinstveno određuje samo jedu rasu iz tabele, u tabeli Pas to određuje koja je njegova rasa, tj rasaID za koju su ostali podaci u tabeli Rasa. Taj uslov treba dodati ili korišćenjem klauzule WHERE ili koriščenjem JOIN-a.

select Pas.Ime, Rasa.NazivRase
from Pas, Rasa
where Pas.RasaID = Rasa.RasaID;

Malo teži primer u kojem se koriste tri tabele:

Za svakog psa ispisati njegovo ime, naziv rase i dužinu dlake:

select Pas.Ime, Duzina_Dlake.Duzina, Rasa.NazivRase
from Pas, Duzina_Dlake, Rasa
where (Pas.DDID = Duzina_Dlake.DDID) and (Pas.RasaID = Rasa.RasaID);

9. Zaključak

Dobra je praksa ako se koriste kvalifikovani nazivi kolona u radu sa više tabela jer omogućavaju da tačno znamo iz koje tabele dolazi svaki podatak.
Njihovo korišćenje nam pomaže da pišemo jasne, čitljive i tačne upite.


Last modified: Wednesday, 12 November 2025, 11:25 AM