当前位置: 首页 > 面试题库 >

mysql / php:显示帖子,并为每个帖子提供所有注释

羊舌高明
2023-03-14
问题内容

我知道这个问题已被问过多次(但是,我仍然找不到解决方案):

  • PHP MYSQL显示带评论的帖子
  • mysql查询-博客文章和评论有限制
  • mysql结构的帖子和评论 …

基本问题:拥有表 postscommentsuser
…可以用一个选择语句选择并显示所有帖子和所有注释(带有comment.user,comment.text,comment.timestamp)吗?这样的选择语句会是什么样子?如果没有,最简单的解决方案是什么?

我也尝试JOINcomments表与table一起posts使用GROUP BY,但是我要么在每一行或每一条注释中仅得到一个注释,但也多次获得这些注释!

我尝试了第一个链接(嵌套mysql_query然后取回)以及第二个链接(带有数组)的解决方案。但是,第一个导致了很多错误(该文章中的语法似乎不正确,我无法弄清楚如何解决它),第二个导致数组出现问题。

到目前为止,我的查询看起来像这样:

SELECT p.id, p.title, p.text, u.username, c.country_name, (SELECT SUM(vote_type) FROM votes v WHERE v.post_id = p.id) AS sum_vote_type FROM posts p LEFT JOIN user u ON ( p.user_id = u.id ) LEFT JOIN countries c ON ( c.country_id = u.country_id ) ORDER BY $orderby DESC

我想知道是否这个问题不是很普遍,有帖子和评论来显示…?

谢谢您提前提供的所有帮助!


问题答案:

不知道您的数据库结构,它应该看起来像这样。请注意,您应该用*实际需要的更明确的列列表替换字符。

SELECT p.*, c.*, u.* FROM posts p
LEFT JOIN comments c ON c.post_id = p.id
LEFT JOIN users u ON u.id = p.author_id

请注意,如果您只是想获取计数,总和之类的东西,则最好缓存其中的一些信息。例如,您可能希望将评论计数缓存在发布表中,而不是对每个查询都进行计数。仅在添加/删除评论时计算和更新评论数。

编辑:
意识到您还希望将用户数据附加到每个注释。您可以多次加入同一张表,但是它很难看。这可能会变成一个非常昂贵的查询。我还提供了一个有关如何为列添加别名的示例,以减少混乱:

SELECT p.*, c.*, u.name as post_author, u2.name as comment_author FROM posts p
LEFT JOIN comments c ON c.post_id = p.id
LEFT JOIN users u ON u.id = p.author_id
LEFT JOIN users u2 ON u2.id = c.author_id


 类似资料:
  • 问题内容: 我有一张桌子上有用户帖子。我需要显示每天每位用户从1到最多n条帖子。 例子: 我需要一个查询,例如返回每个用户每天最多2条帖子的查询: 我尝试使用GROUP和HAVING,但是我仅获得前n个记录,而不是每个用户每天的前n个记录: 问题答案: 试试这个糟糕的SQL代码:) 结果: 在这里摆弄。 我认为如果按日期降序排序会更合适,因为实际上是最接近当前日期的前2位。

  • 我已经使用代码设置了WordPress自定义帖子类型。我已经设法让自定义帖子显示在“归档”页面中,但如果我单击“归档”页面中的链接,WP无法找到单个帖子页面。 我想我可能对定制的post permalinks有问题。希望有人能帮我 functions.php 页面模板 要显示自定义帖子,我设置了一个带有WP查询的新页面模板: 页面模板代码似乎工作和所有自定义帖子显示预期但当我点击标题链接我得到一个

  • 圈子帖子列表 圈子帖子详情 圈子帖子创建 圈子帖子更新 圈子帖子删除 我的帖子列表 全部帖子列表包含搜索 圈子帖子列表 GET /groups/:group/posts 响应 status 200 参数说明 名称 类型 说明 type string 默认:latest_post, latest_post 最新帖子,latest_reply最新回复 limit integer 默认 15 ,数据

  • 我目前正在完成一个客户网站的工作,我希望作者的简历出现在单篇文章的底部。唯一的问题是,我只想在填写用户简历的前端显示此部分。我很快就能让它工作了,但是由于某种原因,当bio部分包含副本时,下面代码中的内容没有显示在前端。 任何帮助都将不胜感激。谢谢

  • 问题内容: 我有一个包含以下两个表的数据库, USERS,POSTS 我正在寻找一种方法来获取用户拥有的帖子数。 我尝试了以下SQL命令的许多变体,但均未成功。与其显示单个用户的帖子数,不如显示一行包含所有帖子的数。 最后我想要这样的东西 问题答案: 弄清楚了。

  • } 此应用程序没有针对/错误的显式映射,因此您将其视为回退。 5月21 01:40:01星期六ALMT 2022发生意外错误(type=内部服务器错误,status=500)。NoSuchElementExceptionjava.util.无值:com.shop.sneaker.控制器java.base/java.util.Optional.get(Optional.java:143)无值。Log