2012-01-03 20 views
1

大丈夫ですので、2つのテーブルがあります。 1つはレシピを保持し、2つ目はすべてのレーティングを保持します。PHPとMySQLで最も評価の高いものを表示

recipes_ratings: 
id, rating, user_id, recipe_id 

recipes: 
id, name 

各レシピのすべての行を数えたいと思います。次に、最も評価が高く降順のレシピをソートして表示します。

最も簡単な方法は何ですか?私はクエリを行うと思っている

SELECT * FROM recipes_ratings 

そして、評価でループを数え、配列に格納してからそれを並べ替えます。

しかし、それは簡単にできますか? 1つのクエリだけそれをすべて行う..または?

+1

おそらく、「平均レーティング」を使用する代わりに、「AVG」にしたいと思うかもしれません。「レシピID:レシピID:レシピID:レシピID:レシピID:ORDER BY SUM(レーティング)DESC; –

+0

おそらく、レーティングが1回または2回しか除外されていないレシピを除外することも検討したいと思うでしょう。 –

答えて

1

レシピごとの総合評価をどのように計算するかによって、計算を調整する必要があります。しかし、クエリは次のようなものでなければなりません。

これはレーティングなしでレシピを出力することに注意してください。返さないようにする場合はLEFT JOINJOINに変更してください。

+0

これは実際には機能しません。それは私にいくつかの偽の結果を与えます。私はレシピに5つ星を与えた行を1つだけ試してみましたが、それはトップにも来なかった – Karem

+0

いくつかのテストデータを提供できますか? –

+0

okこれを参照してください:http://pastebin.com/xvvzTY4p – Karem

関連する問題