[英]How to create a MySQL query that returns the replies to a given user's comments
我正在尝试创建一个页面,显示对活动用户的第一层评论的所有回复。 这是一个类似于我的数据库表的示例......
评论号 | postid | 命令 | 用户名 | 用户身份 | 上下文 |
---|---|---|---|---|---|
52 | 100 | 0 | 用户1 | 1 | 第一的 |
53 | 100 | 52 | 用户2 | 2 | 第二 |
54 | 100 | 52 | 用户1 | 1 | 第三 |
"commentid" 是评论的唯一 id,"postid" 是它所在的帖子的 id,"commid" 给出了它所响应的评论的编号("0" 表示它在第一层),等等...
如果我以“user1”身份登录并执行以下操作...
$ra = $DB->Execute('SELECT * FROM comments WHERE userid = '.$DB->qstr($id).' ORDER BY commentid DESC')
...它将返回注释 #52 和 #54。 很简单。
我在创建对数据库的请求时遇到问题,该请求将为 output 提供一个列表,该列表为我提供 #53(这是对 user1 评论的回复)。 如果可能的话,我不想包含由活动用户他/她自己编写的#54。
构建此查询的好方法是什么?
如果您只想检索第一级回复(忽略来自初始用户的回复),您可以将评论JOIN
自身以查找回复,过滤掉具有相同userid
的回复:
SELECT rep.*
FROM comments rep
JOIN comments cmt
WHERE rep.commid = cmt.commentid
AND cmt.userid = 1
AND rep.userid != 1
Output(用于您的示例数据):
commentid postid commid username userid commtext
53 100 52 user2 2 second
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.