Top x bewertete Inhalte ausgeben (Durchschnittsberechnung mit MySQL)

qsrs

Erfahrenes Mitglied
Hallo,

ich habe eine Dateiverwaltung in PHP und kann die einzelnen Dateien mittels MySQL-Tabelle bewerten. Jetzt möchte ich diese Bewertungen dazu nutzen, um mir die am besten bewerteten Dateien ausgeben zu lassen. Z.B. die ersten 10 mit der besten Bewertung. Meine SQL-Tabelle sieht folgendermaßen aus:

score | file_id |
3 | 1 |
1 | 1 |
3 | 2 |
5 | 2 |

Wie ich den Durschnitt einer einzelnen Datei berechne, das weiß ich, das mache ich so:

PHP:
$sql = "SELECT AVG(`score`) AS `average` FROM `$dbtable12` WHERE `file_id` = '$id'";

Wie aber könnte ich die am besten bewerteten in Reihenfolge ausgeben? Vielen Dank für Antworten.
 
Ich bin mir nicht ganz sicher, aber probier es mal so:
SQL:
SELECT AVG(`score`) AS `average` FROM `$dbtable12` WHERE `file_id` = '$id' GROUP BY `file_id` ORDER BY `average` DESC
 
Hi,

Ich bin mir nicht ganz sicher, aber probier es mal so:
SQL:
SELECT AVG(`score`) AS `average` FROM `$dbtable12` WHERE `file_id` = '$id' GROUP BY `file_id` ORDER BY `average` DESC

Die WHERE-Klausel muss raus, da sonst nur der Durchschnittswert der Bewertungen einer bestimmten Datei ermittelt wird. Nach Belieben noch ein LIMIT hinzufügen, dann passt's.

Gruß
Marvin
 
Zuletzt bearbeitet:
Die WHERE-Klausel muss raus,
Vielen Dank, das war es. Ich habe noch eine kleine Frage und ein Problem, bei dem ich nicht weiterkomme. Ich würde gerne noch ausgeben, wie oft für eine Datei eine Bewertung abgegeben wurde. Also eien Berechnung, wie viele Tabellen-Einträge pro Datei existieren. Mir fehlt dazu gerade der Ansatz, also hoffe ich auf Hilfe und freue mich über eventuelle Antworten.
 
SQL:
SELECT
    COUNT(`$dbtable12`.`file_id`) AS `count`,
    AVG(`score`) AS `average`
FROM
    `$dbtable12`
GROUP BY
    `file_id`
ORDER BY
    `average` DESC
 
Zurück