Mysql Sql查询以查找评级?

Mysql Sql查询以查找评级?,mysql,sql,rating,Mysql,Sql,Rating,在我的应用程序中,我将用户提供的评论存储到mysql中 现在,我必须根据评论找到评级。我存储的评论,如食品质量、服务、氛围、价值,所有的值都在1到5之间 如何根据这些值找到评级 我的桌子结构是 食品质量服务氛围价值餐厅 1 3 2 4 1给我们一些表格结构。您可以使用[AVG][1]功能。有关更多详细信息,请提供表格结构 SELECT products.*, AVG(r.value) AS product_rating FROM products p LEFT JOIN ratings r ON

在我的应用程序中,我将用户提供的评论存储到mysql中

现在,我必须根据评论找到评级。我存储的评论,如食品质量、服务、氛围、价值,所有的值都在1到5之间

如何根据这些值找到评级

我的桌子结构是

食品质量服务氛围价值餐厅
1 3 2 4 1

给我们一些表格结构。您可以使用[AVG][1]功能。有关更多详细信息,请提供表格结构

SELECT products.*, AVG(r.value) AS product_rating FROM products p LEFT JOIN ratings r ON p.id = r.product_id GROUP BY p.id

考虑到产品是您拥有评级的表,而评级是您持有评级的表,ratings.value是包含评级值的字段。

SQL中有一些简单的解决方案,但我建议您阅读本文:并尝试直接在代码中的某个地方实现这样的评级

也就是说,一个简单的解决方案可以是说4和5是积极的,例如:

伪代码:

myrating=从评论中选择评级
如果rating==4或rating==5作为PositiveRatings/SELECT*FROM reviews AS totalrating

确切地说,您必须向我们提供表格详细信息,比如每个用户可能有评级,那么您必须使用group by子句和AVG mysql函数来查找每个用户的评级。

假设您想要每个餐厅id的评级,因为你没有说明评级是什么意思

SELECT RestaurantId
, SUM(FoodQuality+Service+Atmosphere+Value) rating1 -- the sum of total rating
, AVG(FoodQuality+Service+Atmosphere+Value) rating2 -- the average of total rating, max 20
, AVG((FoodQuality+Service+Atmosphere+Value)/4) rating3 -- the average of average rating, max 5
FROM table
GROUP BY RestaurantId

举一个你的数据和你试图达到的结果的例子,会有帮助的!由于您没有给出任何实际信息,我能给出的唯一答案是:检索数据库值、计算评级、显示评级。您对评级的计算是什么?这是所有评论的平均值吗?是别的吗?你需要更清楚一点好吧,你有一张四个等级的表,RestaurantId。评级是指每个餐厅的平均FoodQuality+服务+氛围+值?ReviewId、ReviewName、FoodQualityfloat、Servicefloat、Atmospherefloat、ValueFloat您的评论没有太大帮助-但是,我给了您一个计算平均评级的查询-尝试将表从我的示例映射到您的表结构: