vežbe - LEFT JOIN
Koristi se ista baza i iste tabele (Ucenik i Ocena) kako bi učenici videli razliku u rezultatima između INNER / LEFT JOIN
Šta radi LEFT JOIN?
LEFT JOIN vraća:
-
sve podatke iz leve tabele (Ucenik)
-
i samo one podatke iz desne tabele (Ocena) koji se podudaraju
-
ako učenik NEMA ocene → vrednosti iz Ocena su NULL
Koristi se kada želimo da vidimo sve učenike, bez obzira na to imaju li ocene.
📘 Koristimo tabele koje su ranije kreirane
Koriste se tabele:
-
Ucenik -
Ocena
(Nema novih tabela — iste kao kod INNER JOIN lekcije.)
📘 Primer LEFT JOIN upita
SELECT U.Ime, U.Prezime, O.Predmet, O.Vrednost
FROM Ucenik AS U
LEFT JOIN Ocena AS O
ON U.UcenikID = O.UcenikID;
Učenik koji nema ocena imaće NULL u kolonama predmet/vrednost.
📘 Zadaci za LEFT JOIN (10 zadataka)
-
Prikazati sve učenike i njihove ocene (i one koji nemaju ocene).
-
Prikazati sve učenike i ocene iz Matematike (NULL ako nemaju ocenu iz Matematike).
-
Prikazati učenike koji nemaju nijednu ocenu (filtrirati NULL).
-
Prikazati učenike koji nemaju ocenu iz Informatike.
-
Prikazati učenike iz 3. razreda i sve njihove ocene.
-
Prikazati učenike i njihove poslednje ocene (MAX datum).
-
Prikazati sve učenike i ukupan broj ocena (0 ako nemaju ocena).
-
Prikazati učenike koji imaju 0 ili 1 ocenu.
-
Prikazati učenike koji nemaju ocenu iz Engleskog.
-
Prikazati sve učenike i ocene koje su dobijene posle 10. februara 2024, uključujući one koji nemaju ocene.
📘 Rešenja za LEFT JOIN zadatke koji su rađeni u školi
1. Svi učenici i njihove ocene
SELECT Ucenik.Ime, Ucenik.Prezime, Ocena.Predmet, Ocena.Vrednost
FROM Ucenik LEFT JOIN Ocena
ON Ucenik.UcenikID = Ocena.UcenikID;
2. Ocene iz matematike, uključujući NULL
SELECT Ucenik.Ime, Ucenik.Prezime, Ocena.Vrednost
FROM Ucenik LEFT JOIN Ocena
ON Ucenik.UcenikID = Ocena.UcenikID AND Ocena.Predmet = 'Matematika';
3. Učenici bez ijedne ocene
SELECT Ucenik.Ime, Ucenik.Prezime
FROM Ucenik LEFT JOIN Ocena
ON Ucenik.UcenikID = Ocena.UcenikID
WHERE Ocena.OcenaID IS NULL;