2017-10-07 50 views
-2

所以我想说明通过使MySQL查询我的博客页面上的5个最热门的帖子(没有WordPress的,所有的HTML和PHP)。受欢迎程度是该帖子的评论数量。这很容易如果我的博客条目表包含评论数。但我正在寻找一个解决方案,而无需再次更改所有的MySQL表。所以,我有两个表格:PHP:热门职位通过MySQL查询

博客
包含列:ID |内容|日期
示例行:1 |你好,我今天去购物| 01.01.01
评论
包含列:ID |内容|日期|帐户|参考
示例行:2 |真棒入门! | 02.01.01 | Kim | 1

基本上,每次有人对一个条目的评论他的帐户名称和评论正在插入评论表。此外,还有一个自动增加的ID和包含博客条目的ID它属于一个参考(和there's一个日期)。该博客表格只包含它应该显示什么(除了它的自动递增的ID,它是用于在注释表中的参考列)。
那么,查询应我运行,以获得博客Entrys其中最意见均指在参考 -Column?

编辑:我试过sum(),count()和max()的各种组合,从未得到预期的结果。应该早点写这个。

+1

这将是很好,看看它是什么,你试过为了有你自己解决了这个问题,这会告诉我们你在发布问题之前已经研究过了。 当你尝试,你也学习。如果有人只是给你一个答案/解决方案,那就没有用,我说这是为了你的未来。 然后,您可以编辑您的帖子以包含可能失败的内容;即使这表明了你的努力。请记住,我们总是乐于提供帮助。 –

回答

0

下面的查询让你所有与较高的计数的评论博客。我已经使用限制限制没有记录进账

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 
+0

你能向我解释那个查询在做什么吗? – SearchingSolutions

+0

好的,我会的。将回复写下评论 –

+0

@SearchingSolutions我的答案适合你。如果有任何其他查询,请让我知道 –

0

即使从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;