PHP:通过MYSQL查询发布流行帖子
因此,我想通过一个mysql查询来显示我博客页面上最受欢迎的5篇文章(没有wordpress,全部是html和php)。受欢迎程度取决于该帖子的评论数量。如果我的博客条目表包含评论计数,这将很容易。但是我正在寻找一种解决方案,而不需要再次更改所有mysql表。所以,我有两张桌子: 表博客PHP:通过MYSQL查询发布流行帖子,mysql,sql,sorting,Mysql,Sql,Sorting,因此,我想通过一个mysql查询来显示我博客页面上最受欢迎的5篇文章(没有wordpress,全部是html和php)。受欢迎程度取决于该帖子的评论数量。如果我的博客条目表包含评论计数,这将很容易。但是我正在寻找一种解决方案,而不需要再次更改所有mysql表。所以,我有两张桌子: 表博客 包含列:ID |内容|日期 示例行:1 |大家好,今天我去购物了| 01.01.01 表评论 包含列:ID |内容|日期|帐户|参考 示例行:2 |很棒的条目!|02.01.01 |金| 1 基本上,每次有人对
包含列:ID |内容|日期
示例行:1 |大家好,今天我去购物了| 01.01.01
表评论
包含列:ID |内容|日期|帐户|参考
示例行:2 |很棒的条目!|02.01.01 |金| 1 基本上,每次有人对条目进行注释时,他的帐户名和注释都会插入到注释表中。此外,还有一个自动递增ID和一个引用,其中包含它所属博客条目的ID(还有一个日期)。Blog表只包含它应该显示的内容(除了它的自动递增ID,该ID用于Comments表中的Reference列)。
那么,我应该运行什么查询来获取引用列中评论最多的博客条目呢
编辑:我尝试了sum()、count()和max()的各种组合,但从未得到预期的结果。应该早一点写这篇文章。下面的查询将获得所有评论数较高的博客。我使用了限制来限制获取的记录数
SELECT b.content, b.id AS blogid, COUNT(c.id) as commentsCount
FROM blog b
JOIN comments c ON c.reference = b.id
GROUP BY b.id
HAVING commentsCount > 0
ORDER BY commentsCount desc
LIMIT 5
我已经在每一行添加了注释。请查收
SELECT b.content, b.id AS blogid, COUNT(c.id) as commentsCount //This line you can select whatever columns you need.
FROM blog b
JOIN comments c ON c.reference = b.id //Joing comments by reference column
GROUP BY b.id //group the column
HAVING commentsCount > 0 //The blog may have or may not have comments
ORDER BY commentsCount desc //Used to get the highest comment count first
LIMIT 5 //get only 5 records if you want 10 records then replace by 10. If you want all the records then remove this line
尽管Channaveer Hakari的回答非常好,但我发现了一个简短的问题:
SELECT * FROM `Blog` b JOIN (SELECT c.Reference, Count(*) AS cnt FROM `Comments` c GROUP BY c.Reference) d ON (d.Reference=b.ID) ORDER BY cnt DESC;
很高兴看到你自己尝试了什么来解决这个问题,这会告诉我们你在发布问题之前做了研究。当你尝试时,你也会学习。如果有人只是给你一个答案/解决方案,那一切都是徒劳的,我这样说是为了你的未来。然后,您可以编辑您的帖子,以包含可能失败的内容;即使这样,也表明了你的努力。记住,我们总是很乐意帮忙。你能给我解释一下那个查询在做什么吗?好的,我会的。将向answer@SearchingSolutions我的答案对你有用吗。如果有任何其他疑问,请告诉我