首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >选择评论最多的帖子和子帖子和父帖子

选择评论最多的帖子和子帖子和父帖子
EN

Stack Overflow用户
提问于 2014-01-22 03:54:18
回答 1查看 120关注 0票数 1

我设置了两个MySQLi表。其中一个叫做"AIW_comments“。它有一个标题为"post_id“的专栏,让我知道这条评论指的是什么帖子。

我还有一个名为"AIW_posts“的表,里面有所有的帖子。

现在,我需要一条mysqli select语句来首先检索评论最多的帖子。我使用以下命令让代码完全按照预期运行:

代码语言:javascript
复制
$results = mysqli_query($con,"SELECT AIW_posts.*
FROM AIW_comments, AIW_posts
WHERE (AIW_posts.id = AIW_comments.post_id AND childPost_id = 0)
GROUP BY AIW_comments.post_id
ORDER BY COUNT(*) DESC
       , AIW_comments.post_id DESC

       LIMIT $startIndex,$amount") or die(mysqli_error($con));
}

我添加了编辑帖子的功能。我为"AIW_posts“添加了两个新列"parentPost_id”和"childPost_id“。我创建了一个PHP函数,它为我提供了一个包含每个子帖子的id的数组,以及给定任何post的id的父post。

我如何选择评论最多的帖子,就像我之前做的那样,但这一次包括所有父子帖子的评论,就好像它们是同一篇帖子一样?

EN

回答 1

Stack Overflow用户

发布于 2014-09-03 17:28:09

下面是将返回您要查找的数据的SQL查询:

代码语言:javascript
复制
SELECT P.post_id
FROM AIW_posts P
INNER JOIN AIW_comments C ON C.post_id = P.post_id
INNER JOIN AIW_posts PP ON PP.post_id = P.parentPost_id
INNER JOIN AIW_posts PC ON PC.post_id = P.childPost_id
GROUP BY P.post_id
ORDER BY COUNT(C.post_id) DESC, P.post_id DESC
LIMIT 1 -- Or whatever limit you want

我选择只向您提供SQL查询,而不是PHP实现,以便关注您的问题并简化我的答案的可读性。

以下是关于我的查询的几个信息:

  • 没有使用旧的连接语法(...FROM table1,table2 WHERE...),我使用了一个INNER JOINclause
  • I,使用了两个额外的连接来获得父帖子和子帖子
  • 。出于可读性的目的,我的查询只返回post_id。要获得所需的所有列,只需将它们添加到SELECT子句中,不要忘记在中添加这些列

希望这能对你有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21267746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档