我正在尝试创建一个评级系统,用户可以对图片/视频/音频等进行评分 . 我目前有两张 table
Table: products
Cols: product_id[PK] | name | category | type | link
这是产品表,包含有关产品的信息 . 如果您对产品感到困惑,可以将“产品”视为图像/视频/音频,我将其命名为仅仅是为了让我更容易理解它 . 第二个表是评级
Table: product_ratings
Cols: rating_id[PK] | rating | product_id | timestamp
该表存储有关用户给出的评级的信息 .
我想要一个页面,它将显示所有“产品”的最高评级(平均) . 到目前为止,我已经浏览了SA,并找到了以下代码:
SELECT
p.product_id, p.name,
AVG(pr.rating) AS rating_average
FROM products p
INNER JOIN product_ratings pr
ON pr.product_id = p.product_id
WHERE p.product_id = 1
这只返回特定product_id的平均评级,我将如何获得所有product_ids及其平均评级,以及如何通过PHP找到最高评分?
我试过了:
WHERE p.product_id < 1 AND p.product_id < 30
但这只返回product_id为2,其名称和average_rating,我不明白 .
欢迎提供指导/材料链接
3 回答
试一试:
这也是毫无意义的表达:
因为它完全等同于
而且我怀疑你的ids低于零
您的查询已结束 . 只需删除过滤所有内容的WHERE子句即可 .
这将返回每个产品的平均值,并按结果集顶部的最高平均评级进行排序 .