10.12. Vežbe - Zadaci gde se koristi RIGHT JOIN
Koristi se ista baza i iste tabele (Ucenik i Ocena) kako bi učenici videli razliku u rezultatima između INNER / RIGHT JOIN
RIGHT JOIN vraća sve redove iz desne tabele (Ovde: Ocena), a iz leve (Ucenik) vraća samo one koji imaju poklapanje.
Kod nas — desna tabela će biti tabela Ocena, pa ćemo dobiti sve ocene, čak i ako neki učenik ne postoji u tabeli Ucenik (hipotetički) koji je dobio neku ocenu .
Zadatak 1
Prikazati sve ocene i podatke o učenicima, uključujući i ocene koje niko nije dobio (koje eventualno nemaju učenika u tabeli Ucenik).
Rešenje:
SELECT U.Ime, Uk.Prezime, O.Predmet, O.Vrednost
FROM Ucenik U RIGHT JOIN Ocena O
ON U.UcenikID = O.UcenikID;
Zadatak 2
Prikazati sve ocene iz predmeta Matematika, zajedno sa podacima o učeniku.
Ako postoji ocena iz Matematike koju niko nije dobio – prikazati je. (ocena bez učenika)
SELECT U.Ime, U.Prezime, O.Predmet, O.Vrednost
FROM Ucenik U RIGHT JOIN Ocena O
ON U.UcenikID = O.UcenikID
WHERE O.Predmet = 'Matematika';
Zadatak 3 (malo teži)
Pronaći ocene koje niko nije dobio (ocene koje nemaju odgovarajućeg učenika (u realnom svetu to su greške u podacima).
SELECT Ocena.*
FROM Ucenik RIGHT JOIN Ocena
ON Ucenik.UcenikID = Ocena.UcenikID
WHERE Ucenik.UcenikID IS NULL;
Zadaci za vežbu
Zadatak 1 - Prikazati sve ocene zajedno sa razredom učenika. Ako učenik ne postoji u tabeli Ucenik, prikazati NULL u koloni Razred.
Zadatak 2 - prikazati sve ocene iz februara 2024, sa informacijama o učenicima (ako postoje).
Zadatak 3 - prikazati sve predmete i imena učenika za ocene koje imaju vrednost 5.
Zadatak 4 - prikazati sve ocene i dodati kolonu “RazredniStaresina”: "III razred" ako je učenik u 3. razredu, "II razred" ako je učenik u 2. razredu, "Nepoznat" ako učenik ne postoji
Zadatak 5 - Pronaći sve ocene iz predmeta „Biologija“ i dodaj prezime učenika (ako postoji).
Zadatak 6 - prikazati sve ocene i dodaj kolonu sa dužinom prezimena učenika. Ako učenik ne postoji → prikazati 0.
Zadatak 7 - prikazati sve ocene i dodaj kolonu “Tip”: "Validna ocena" → učenik postoji, "Nevalidna ocena" → učenik ne postoji
Zadatak 8 - Pronaći ocene iz Matematike koje su manje od 4 i prikazati ime učenika (ako postoji).
Zadatak 9 Prikazati sve ocene i izračunati godinu iz datuma ocene pomoću YEAR(Datum).
Zadatak 10 - Prikazati sve ocene i sortirati rezultate po: razredu učenika (NULL vrednosti da budu poslednje), pa po vrednosti ocene - opadajuće.