私は2つのテーブルを持っています:
レシピ
RecipeId | UserId | 名前| 等
と
RecipeRatings
RecipeRatingId | RecipeId | UserId | 評価| コメント
レシピのリストを選択し、平均評価を含めたいと思います。このようなものが機能します:
SELECT
Recipes.RecipeId,
Name,
AVG(RecipeRatings.Rating) AS AverageRating
FROM Recipes
INNER JOIN RecipeRatings
ON RecipeRatings.RecipeId = Recipes.RecipeId
GROUP BY Recipes.RecipeId, Recipes.Name
ORDER BY AverageRating DESC
しかし、私が本当に望んでいるのは、平均または現在のユーザーの評価を取得することです。ユーザーが自分で平均を高く評価したり低く評価したりしても、わざわざ平均を表示するべきではないようです。
したがって、パラメーター@userIdが与えられた場合、レシピのリストを現在のユーザーの評価とともに選択する方法はありますか?それ以外の場合は、RecipeRatingsテーブルからの平均(存在する場合)はありますか?
また、AverageRating列とMyRating列があることも問題ありません。正しく表示するかどうかは、クライアント側に任されています。