首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果post是由同一用户创建的,则排除计数中的用户。

如果post是由同一用户创建的,则排除计数中的用户。
EN

Stack Overflow用户
提问于 2022-05-19 12:45:19
回答 1查看 20关注 0票数 1

我的系统中有以下场景:

一名成员:

代码语言:javascript
复制
CREATE TABLE `member` (
  `memberid` int(11) NOT NULL,
  `email` text
);

创建协议:

代码语言:javascript
复制
CREATE TABLE `protocol` (
  `protocolid` int(11) NOT NULL,
  `createdby` int(11) NOT NULL,
  `status` varchar(256) DEFAULT NULL
) ;

成员可以创建关于协议的反馈帖子。

代码语言:javascript
复制
CREATE TABLE `protocolpost` (
  `protocolid` int(11) NOT NULL,
  `protocolpostid` int(11) NOT NULL,
  `createdby` text
  ) ;

成员可以回复反馈。

代码语言:javascript
复制
CREATE TABLE `protocolpostcomment` (
  `protocolpostcommentid` int(11) NOT NULL,
  `protocolpostid` int(11) NOT NULL,
  `commentedby` varchar(256) DEFAULT NULL,
  `hasfeedbackreplyviewed` tinyint(1) DEFAULT NULL
) ;

我想得到成员创建的协议的所有帖子评论的回复总数,不包括创建该协议的用户的数量,以及帖子作者的评论。

到目前为止,我已经编写了这个查询,但是这个查询返回所有的post注释,我想排除反馈创建者所做的回复。

代码语言:javascript
复制
SELECT 
       protocols.*,
       protocolFeedbackReply.*,
       protocolfeedback.*
FROM   protocolpost AS protocolfeedback
       JOIN protocol AS protocols
         ON protocols.protocolid = protocolfeedback.protocolid
       JOIN protocolpostcomment AS protocolFeedbackReply
         ON protocolfeedback.protocolpostid =
            protocolFeedbackReply.protocolpostid
WHERE  protocols.createdby = 1038
       AND protocols.status = "published"
       AND protocolFeedbackReply.hasfeedbackreplyviewed = 0
       AND protocolfeedback.createdby NOT LIKE Concat('%', (SELECT email
                                                            FROM   member
                                                            WHERE
                                               memberid = 1038),
                                               '%'); 

我在这里附加了一个[医]小提琴

在dbfiddle示例中,只有用户nwxaofrc@tempemail.com,所做的注释应该在计数上。

EN

回答 1

Stack Overflow用户

发布于 2022-05-19 13:02:13

谢谢你描述得很好。您的查询很难阅读,如果可能的话,可能会简化。无论如何,在您的NOT LIKE条件下,您似乎需要检查protocolFeedbackReply.commentedby而不是protocolfeedback.createdby,请参阅db<>fiddle

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

https://stackoverflow.com/questions/72304805

复制
相关文章

相似问题

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