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
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
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.
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.