Zrozumienie kodu

0

Mam tabele:
wykonawca (idwykonawcy, nazwa)
album ( idalbumu,nazwa,rok, idwykonawcy)
recenzja(idrecenzji,gazeta,ocena,idalbumu)

wypisz dla kazdego wykonawcy srednia z ocen jego albumow (ocena albumu to srednia ocen z wszystkich recenzji)

SELECT MAX(nazwa) wykonawca, AVG(ocena) srednia
FROM wykonawca LEFT JOIN
(SELECT album.idalbumu, MAX(idwykonawcy) idwykonawcy, AVG(ocena) ocena
FROM album LEFT JOIN recenzja ON album.idalbumu = recenzja.idalbumu
GROUP BY album.idalbumu) ocenyalbumow
ON wykonawca.idwykonawcy = ocenyalbumow.idwykonawcy
GROUP BY wykonawca.idwykonawcy;

Chce tu pokazac nazwe z tabeli wykonawca i srednia ocen z tabeli album, nie rozumiem dlaczego została uzyta tu funkcja MAX "MAX(nazwa)".Nastepnie podzapytanie " (SELECT album.idalbumu, MAX(idwykonawcy) idwykonawcy, AVG(ocena) ocena
FROM album LEFT JOIN recenzja ON album.idalbumu = recenzja.idalbumu
GROUP BY album.idalbumu) ocenyalbumow" rowniez sprawia mi problem jak została policzona tu średnia ocen wszystkich recenzji. Proszę o wytłumaczenie. Z góry bardzo dziękuje.

0

Autor tego zapytania był pijany. Ten MAX jest niepotrzebny wystarczy do GROUP BY dodać pole nazwa. Podobnie podzapytanie jest zbędne, wystarczyłby INNER JOIN do tabeli albumów oraz recenzji.

SELECT w.nazwa, AVG(r.ocena)
FROM wykonawca w
INNER JOIN album a ON
a.idwykonawcy = w.idwykonawcy
INNER JOIN recenzja r ON
r.idalbumu = a.idalbumu
GROUP BY w.nazwa;

1 użytkowników online, w tym zalogowanych: 0, gości: 1