【发布时间】:2017-09-11 19:19:51
【问题描述】:
所以我有 2 个表:列表和评论。 我试图获得具有最佳评论的列表,该列表位于某个州。因此,我需要从列表的所有评论中获取 AVG,然后对列表进行 DESC。
表结构: 清单:id;标题;状态; ...
评论: ID;列表ID;评分(从 1 到 5)
我只能解决最多评论的 DESC 列表,但现在我尝试获取评论评分的 AVG。
SELECT *,
(SELECT COUNT(*)
FROM reviews rv
WHERE ls.id = rv.listing_id) Count
FROM listing ls
WHERE ls.state ='$get_state'
ORDER BY Count DESC
样本数据:
Listing:
id title State
1 Hotel with nice view Arizona
2 Hotel to stay Arizona
Review:
id listing_id rating
1 1 4(stars)
2 1 4(stars)
3 1 3(stars)
4 2 5(stars)
列表 id 1 获得 3 条评论,总星值为 11 / 3 条评论 = 3.6 颗星
列表 id 2 获得 1 条评论,总星值为 5 / 1 = 5 星
现在我应该先得到清单 2,然后得到清单 1 我想在 PHP 页面上显示整个内容。
接下来我能做什么? 感谢您的帮助
【问题讨论】:
-
提供样本数据和预期结果
-
@FerdinandGaspar 完成,谢谢
-
请标记您正在使用的 RDBMS
-
@FerdinandGaspar 我还有一个问题...我添加了必须确认电子邮件才能解锁评论的功能。现在我在审查表中有一个名为 mail_approved 的列。问题是我只需要获得 mail_approved = 1 的评论的 AVG 评级。我在哪里可以添加这个子句?我必须重新格式化整个查询吗?非常感谢!