Hallo Forum,
ich habe folgendes Problem uud bin für jeden Tipp dankbar. Ich habe eine Datenbanktabelle, in der Filmbewertungen gespeichert sind. Dass heisst genauer:
Ein registrierter User kann auf meiner Seite Filme bewerten. Beim absenden einer Bewertung (zwischen 1 und 10) wird diese in die Datenbank übertragen. Nun möchte ich eine Art TopListe erstellen. Die Abfrage, die ich dazu bisher gemacht habe, lautet wie folgt:
SELECT ROUND(AVG(bew.bewertung)) AS durchschnitt, COUNT(bew.id) AS anzahl, film.* FROM tbl_filme_bewertungen bew LEFT JOIN tbl_filme film ON film.id = bew.film_id GROUP BY bew.film_id ORDER BY durchschnitt DESC LIMIT 0,10
Das funktioniert alles wunderbar. Die besten 10 Filme in der Datenbank werden ausgelesen. Es bleibt lediglich ein kleiner Schönheitsfehler. Und zwar sollte ein Film erst dann in die Top 10 aufgenommen werden, wenn mindestens 5 Bewertungen eingeganzen sind, also COUNT(bew.id) AS anzahl sozusagen >= 5 ist. Leider kann ich das nicht als WHERE-Klausel in die Abfrage einbauen, weil anzahl kein Datenbankfeld ist und ich dann einen Fehler bekomme.
Hat jemand eine Idee, wie man die Beschränkung auf 5 oder mehr Bewertungen (sprich Datensätze pro Film) in die Abfrage übernehmen kann ? Gerne auch Ideen mit anderen Abfragen.
Vielen Dank ...
ich habe folgendes Problem uud bin für jeden Tipp dankbar. Ich habe eine Datenbanktabelle, in der Filmbewertungen gespeichert sind. Dass heisst genauer:
Ein registrierter User kann auf meiner Seite Filme bewerten. Beim absenden einer Bewertung (zwischen 1 und 10) wird diese in die Datenbank übertragen. Nun möchte ich eine Art TopListe erstellen. Die Abfrage, die ich dazu bisher gemacht habe, lautet wie folgt:
SELECT ROUND(AVG(bew.bewertung)) AS durchschnitt, COUNT(bew.id) AS anzahl, film.* FROM tbl_filme_bewertungen bew LEFT JOIN tbl_filme film ON film.id = bew.film_id GROUP BY bew.film_id ORDER BY durchschnitt DESC LIMIT 0,10
Das funktioniert alles wunderbar. Die besten 10 Filme in der Datenbank werden ausgelesen. Es bleibt lediglich ein kleiner Schönheitsfehler. Und zwar sollte ein Film erst dann in die Top 10 aufgenommen werden, wenn mindestens 5 Bewertungen eingeganzen sind, also COUNT(bew.id) AS anzahl sozusagen >= 5 ist. Leider kann ich das nicht als WHERE-Klausel in die Abfrage einbauen, weil anzahl kein Datenbankfeld ist und ich dann einen Fehler bekomme.
Hat jemand eine Idee, wie man die Beschränkung auf 5 oder mehr Bewertungen (sprich Datensätze pro Film) in die Abfrage übernehmen kann ? Gerne auch Ideen mit anderen Abfragen.
Vielen Dank ...
Kommentar