Nisi nam rekao koji je DBMS u pitanju, ali evo ti primer za MS SQL ili Access 2002/2003 (LEFT JOIN da bi dobio rezultat i za zanrove koji nisu uopste gledani, a ako hoces samo zanrove koji su gledani onda stavi INNER):
Code:
SELECT Zanr, UkupnoGledan, ZanrManijak, MaxZanrClan
FROM
(SELECT Film.kojizanr AS Zanr, COUNT(*) AS UkupnoGledan
FROM (Film
LEFT JOIN Kaseta ON Film.kojifilm = Kaseta.kojifilm)
INNER JOIN Iznajmio ON Kaseta.kojukasetu = Iznajmio.kojukasetu
GROUP BY Film.kojizanr)
AS Zanrovi
LEFT JOIN
(SELECT MAX(UkupnoZanrClan) AS MaxZanrClan, ZanrManijak, kojizanr
FROM
(SELECT Clan.ime AS ZanrManijak, Film.kojizanr, COUNT(*) AS UkupnoZanrClan
FROM ((Film
INNER JOIN Kaseta ON Film.kojifilm = Kaseta.kojifilm)
INNER JOIN Iznajmio ON Kaseta.kojukasetu = Iznajmio.kojukasetu)
INNER JOIN Clan ON Iznajmio.ko = Clan.ko
GROUP BY Clan.ime AS ZanrManijak, Film.kojizanr) AS UkupnoClanoviZanrovi
GROUP BY ZanrManijak, kojizanr)
AS ZanrManijaci ON Zanrovi.Zanr = ZanrManijaci.kojizanr
Eto, nisam probao vec sam direktno ovde pisao SQL, tako da izvini ako ima neka greska, bitna je ideja. U svakom slucaju ovde dobijas po zanrovima ukupan broj gledanja, clana koji je najvise gledao odredjen zanr (ZanrManijak) kao i koliko puta je gledao taj zanr (ono sto nisi trazio, ali posto vec imamo taj podatak - zasto ga ne prikazati).