Php 选择评论最多的帖子,同时选择子帖子和父帖子
我设置了两个MySQLi表。一个叫做“AIW_评论”。它有一个标题为“post_id”的专栏,让我知道这个评论指的是什么帖子 我还有一张名为“AIW_posts”的表格,上面有所有的帖子 现在我需要一个Php 选择评论最多的帖子,同时选择子帖子和父帖子,php,mysql,sql,select,mysqli,Php,Mysql,Sql,Select,Mysqli,我设置了两个MySQLi表。一个叫做“AIW_评论”。它有一个标题为“post_id”的专栏,让我知道这个评论指的是什么帖子 我还有一张名为“AIW_posts”的表格,上面有所有的帖子 现在我需要一个mysqliselect语句来首先检索评论最多的帖子。我使用以下方法使代码按预期完美运行: $results = mysqli_query($con,"SELECT AIW_posts.* FROM AIW_comments, AIW_posts WHERE (AIW_posts.id = AIW
mysqli
select语句来首先检索评论最多的帖子。我使用以下方法使代码按预期完美运行:
$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数组和任何帖子的id的父帖子
如何像以前一样选择评论最多的帖子,但这次将包含所有父帖子和子帖子评论,就像它们是同一篇帖子一样?以下是SQL查询,它将返回您要查找的数据:
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实现,以便关注您的问题并简化我的答案的可读性
关于我的查询,只有一些信息:
- 而不是使用老式的连接语法(…来自表1,
表2,其中…,我使用了
子句内部连接
- 我用了另外两个 获取父和子帖子的连接
- 为了便于阅读,
我的查询只返回
。要获取所需的所有列,请 只需将它们添加到post\u id
子句中,不要忘记 将这些列添加到SELECT
子句中李>分组依据
希望这能对您有所帮助。对于您提出的结构,肯定有办法做到这一点,但您是否研究过嵌套集结构?这使得在SQL中使用分层数据更加容易。这里有一个例子。