/ / MySQL / PHP: Comment calculer la moyenne d'une colonne à l'aide d'une instruction JOIN - php, mysql

MySQL / PHP: Comment calculer la moyenne d'une certaine colonne à l'aide d'une instruction JOIN - php, mysql

j'en ai un items table avec colonnes: id, name, category et une ratings table avec colonnes: id, item, rating.

Comment puis-je calculer la note moyenne pour chaque article?

Je voudrais avoir un tableau PHP avec:

[id] => item.id
[name] => item.name
[rating] => average rating

Voici ma fonction PHP jusqu'à présent:

function getTopRatings($category) {
$pdo = Database::connect();
$sql = "SELECT item, rating, items.id, items.name FROM ratings INNER JOIN items ON ratings.item=items.id WHERE category = "" . $category . """;
$pdo->query($sql);
foreach ($pdo->query($sql) as $row) {
$ratings[] = array(
"itemid" => $row["id"],
"name" => $row["name"],
"rating" => ?
);
}
Database::disconnect();
}

Réponses:

2 pour la réponse № 1

Il suffit d'utiliser le SQL AVG() fonction, pas besoin de le faire en PHP. Vous devez aussi GROUP BY l’article "s ID, sinon vous obtenez la moyenne pour chaque article:

SELECT item, AVG(rating) as rating, items.id, items.name FROM ratings INNER JOIN items ON ratings.item=items.id WHERE category = "" . $category . "" GROUP BY items.id;

Maintenant le rating Le champ de votre résultat est la moyenne pour chaque élément.

Vous devriez lire sur déclarations préparées. Pour le moment, votre requête est vulnérable aux injections SQL.