/ / MySQL / PHP: जॉइन स्टेटमेंट का उपयोग करके किसी निश्चित कॉलम के औसत की गणना कैसे करें - php, mysql

MySQL / PHP: जॉइन स्टेटमेंट का उपयोग करके किसी निश्चित कॉलम के औसत की गणना कैसे करें - 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

बस एसक्यूएल का प्रयोग करें 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 आपके परिणाम में फ़ील्ड प्रत्येक आइटम के लिए औसत है।

आपको पढ़ना चाहिए तैयार बयान। अभी, आपकी क्वेरी एसक्यूएल इंजेक्शन के लिए कमजोर है।