0

我有一个 crm 应用程序。我从事消息线程工作,发现了一个问题。当我不得不显示每个用户提出的多个查询的新回复时。就像 Facebook 一样,当您登录您的帐户时,它会显示“评论计数器”,然后它不会显示新的回复。我怎么只想算不显示摘要报告。

在这里,我包含了给出基本概念的表层次结构。

在此处输入图像描述

我只计算了员工用户对最终用户提出的多次询问的新回复。当用户登录到他的帐户时,我怎么想计算 AnswerId 的总数(由员工用户给出的回复)。

请告诉我我如何实现这一点。

4

1 回答 1

1
declare @user_id int  -- I assume this is an integer

set @user_id=123  -- the user_id you are interested in

select count(*)
from tbl_answer a
join tbl_question q on q.id=a.question_id
join tbl_inquiry_history i on i.inquiry_id=q.inquiry_id
where i.user_id = @user_id

要通知用户自上次登录以来的“新”答案,您有两个主要选项:-

  1. 将用户知道的答案数量存储在用户记录中——这样下次他们登录时,您就可以告诉他们已经创建了多少“新”答案。这称为“高水印”。用户记录有 10 个存储为高水位线。他们登录。系统计算用户现在有多少答案并找到 15 个答案 - 所以 5 个必须是新的 - 并向用户界面添加消息计数以说出“5 个新答案”(并将高水位线更新为 15) .
  2. 在每个答案上存储一个标志,以记录用户是否阅读了该特定答案。每当添加答案时 - 未设置标志。每当用户阅读答案时,就会设置标志。系统会定期计算没有设置标志的用户有多少答案 - 如果找到任何答案,则会显示一条消息。

选项 1 是“又快又脏”。这很容易实现。它也是最没用的。用户接下来要问的是“好的。那么哪些答案是新的?”。如果您可以按照创建的顺序对答案进行排序,您可以(从上面的示例中)向他们展示最新的 5 个答案 - 但这几乎是您可以做的。他们没有粒度能够阅读其中一个答案并返回列表并缩短列表(取出他们刚刚阅读的答案) - 无需您(作为开发人员)跳过一些复杂的箍来操作列表.

选项 2 是更复杂的解决方案,但提供了用户可能期望的界面类型(如 Facebook - 或 StackOverflow)。聪明的事情是不要使用 bool/bit 作为你的标志——它只允许你跟踪用户是否已经阅读了答案。如果您使用日期时间,您还可以跟踪他们阅读答案的时间 - 这允许对系统的使用方式进行更多分析。

您(或者更确切地说,您的用户)将需要决定您使用哪种方法——一个简单的高水印或每个答案上的细粒度标志。如果您从选项 1 开始,您几乎肯定必须在某个时候实施选项 2 - 所以您不妨字节(大声笑)项目符号并第一次“正确”地做。

于 2013-11-08T16:44:27.000 回答