gpt4 book ai didi

c# - 从数据库中获取未标记的数据

转载 作者:行者123 更新时间:2023-11-30 17:12:31 25 4
gpt4 key购买 nike

我在做什么:

我正在编写一个 C# 应用程序来帮助员工处理电子邮件。我有一个包含邮件的数据库(SQL Server 2008 Express)。一个表包含邮件本身(每行都有 msgId、发件人、收件人、主题、正文 等列),另一个表包含员工如何处理邮件的数据 - 无论何时电子邮件分配了一些属性,具有该属性的新行将保存到第二个表中。

第二个表包含列:msgId、forTeam、notForTeam、processedByTeam。每当员工将一条消息标记为与他的团队相关时,forTeam 列中就会保存一行带有 TEAMXX 值的信息。每当员工对电子邮件执行其他操作时,TEAMXX 值的行将保存在 processedByTeam 列中。

我正在尝试让电子邮件显示在“未处理” View 中,即。具有以下值的邮件:

forTeam: null
notForTeam: everything different than 'TEAM01'
processedByTeam: everything different than 'TEAM01'

我一直在尝试编写许多不同的查询,但它仍然无法按照我想要的方式工作,这让我抓狂。将感谢正确的查询。

示例:

邮件表(邮件):

msgId sender  subject body  received (sortingTime)
53 x@x.com test test 2012-05-11 11:00
54 b@b.com test2 test2 2012-05-10 10:00
55 h@h.com blah blah 2012-05-11 12:00
56 t@t.com dfgg dfgg 2012-05-11 12:30

带有分配的表(MailAssignments):

msgId forTeam notForTeam  processedByTeam
54 null TEAM02 null - this means TEAM02 hid the mail from their view
54 TEAM01 null null - this means TEAM01 assigned the mail to them
54 null null TEAM01 - TEAM01 has processed the mail

53 TEAM01 null null - invisible to other teams
53 null TEAM01 null - invisible for TEAM01 (and also for others because of the above)

56 TEAM01 null null
56 null null TEAM01 - mail processed by TEAM01

现在,我希望我的 C# 应用程序有一个将邮件显示为“未处理”的 View ,即:

  1. 邮件 54 首先为 TEAM02 隐藏 - 对他们来说应该是不可见的
  2. 邮件 54 已分配给 TEAM01 - 现在他们应该可以在“本团队的” View 中看到
  3. 邮件 54 已由 TEAM01 处理 - 现在应该在“本团队” View 中不可见
  4. 邮件 53 已分配给 TEAM01 - 应该在他们的“本团队” View 中可见(并且只对他们可见)
  5. 邮件 53 对于 TEAM01 是隐藏的 - TEAM01 应该是不可见的(并且对于其他任何人,因为之前的操作)
  6. 邮件 56 已分配给 TEAM01 - 现在应该只有“本团队的”中的 TEAM01 可以看到
  7. 邮件 56 已由 TEAM01 处理 - 现在应该在“本团队的”中对 TEAM01 不可见

因此,根据两个表中的现有数据,TEAM01 最终应该只能在“未处理” View 中看到:

mail 55

最佳答案

DECLARE @teamName varchar(50) = 'TEAM01'

SELECT *
FROM Mails M
LEFT OUTER JOIN MailAssignments MA ON M.msgId = MA.msgId
WHERE MA.msgId IS NULL OR
(
MA.forTeam IS NULL AND
MA.notForTeam <> @teamName AND
MA.processedByTeam <> @teamName
)

这会如你所愿吗?

关于c# - 从数据库中获取未标记的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10613292/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com