0

私は非常に初心者ですが、ご容赦ください。

あるテーブルからID番号を取得して、名前の値を保持する別のテーブルの同じ番号を指そうとしています(つまり、rating.id 1 = names.id 1およびnames.name「パン」)。管理していること。次に、名前の横に平均評価を表示します。つまり、すべての rating.rate 値 (1 ~ 5 の範囲) を取得し、評価を平均して、製品の横に表示してから、desc を注文します。そのような :

name-------average rating

Coffee-----4.3

Bread------3.2

Cheese-----2.9

etc

これまでのところ、すべての製品名が表示されますが、評価の数だけ製品名が表示され、次にランク付けされます。あまり役に立ちません。これは私が持っているものです:

SELECT rating.rate, names.name FROM rating INNER JOIN names ON rating.id = names.id ORDER BY rating.rate DESC LIMIT 0, 25 GROUP BY names.name

ご協力ありがとうございました!

4

1 に答える 1

0

あなたの例は、AVG 関数をまったく使用していないように見えますか? 下記はいかがでしょうか?

SELECT AVG(rating.rate) as avg_rating, names.name 
  FROM rating 
  JOIN names 
    ON rating.id = names.id
GROUP BY names.name
ORDER BY avg_rating DESC
LIMIT 0, 25    

これにより、GROUP BY により、名前ごとの評価が平均化されます。AVG の結果は avg_rating に入れられ、ORDER BY で使用されます。

于 2013-07-04T21:33:56.500 に答える