/ / MySQL / PHP: як обчислити середнє значення певного стовпця, використовуючи оператор JOIN - php, mysql

MySQL / PHP: як обчислити середнє значення певного стовпця, використовуючи оператор JOIN - php, mysql

У мене є один items стіл зі стовпцями: id, name, category і один ratings стіл зі стовпцями: id, item, rating.

Як розрахувати середню оцінку для кожного елемента?

Мені хочеться мати масив PHP, який повертається з:

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

Це моя функція PHP поки що:

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();
}

Відповіді:

2 для відповіді № 1

Просто скористайтеся SQL AVG() функція, не потрібно робити це в PHP. Вам також потрібно GROUP BY ідентифікатор елемента, інакше ви отримаєте середнє значення для кожного елемента:

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;

Тепер же rating Поле у ​​вашому результаті є середнім для кожного елемента.

Ви повинні прочитати підготовлені заяви. Зараз ваш запит вразливий для SQL-ін'єкцій.