Zadaci za vežbu i pitanja

SQL - Pitanje 4.

SQL - Pitanje 4.

napisao/la Ana Kaplarević-Mališić -
Broj odgovora: 2

Objasniti kako radi sledeći upit? Odakle 4401 torka u rezultatu?

SELECT s.indeks, p.upisan, imes, NAZIVP

FROM (Studenti s JOIN Prijave p ON

s.indeks = p.indeks and 

s.upisan=p.upisan) 

JOIN PREDMETI pr ON

p.Spred = p.Spred

U odgovoru na Ana Kaplarević-Mališić

Odgovor: SQL - Pitanje 4.

napisao/la Aleksa Radenkovic -

4. zadatak:


Joinom spajamo relacije "Studenti" i "Prijave" uz uslov da se u obe relacije podudara

indeks i godina upisa. Nakon toga Joinom spajamo novonastalu relaciju sa relacijom "PREDMETI"

pod uslovom da je sifra predmeta jednaka u obe relacije, ali greska u zadatku je sto umesto da 

pise "p.Spred=pr.Spred", pise "p.Spred=p.Spred", samim tim nama svaka n-torka u obe relacije

ispunjava uslov da bude pridruzena svakoj iz ove druge. Takodje kad radimo projekciju "s.indeks",

"p.upisan", "imes", "NAZIVP", nemamo naredbu "DISTINCT", pa nam se cesto javljaju i duplikati.

Zbog te 2 greske, dobijamo vise n-torki nego sto treba. Treba da se dobije 155 kolona.

U odgovoru na Aleksa Radenkovic

Re: Odgovor: SQL - Pitanje 4.

napisao/la Ana Kaplarević-Mališić -

Baš tako.

Dakle, spajanjem studenata i prijava dobijamo onoliko zapisa koliko iih ima u prijavama. Problem je napravilo spajanje sa predmetima, jer je uslov uvek tačan, pa je broj parova jednak proizvodu broj torki u prijavama i proja torki u premetima. 

Upit bi trebalo da da spisak studenata koji su bar neki predmet prijavili i naziva predmeta koje su prijavili. DISTINCT bi nam bio koristan da se ne bi više puta javljao isti student sa predmetom koji je prijavljivao više puta. DISTINCT nije bio tema ovog pitanja, ali ste dobro primetili.