私がしていること:
従業員が電子メールを処理するのに役立つC#アプリケーションを作成しています。メールを含むデータベース(SQL Server 2008 Express)があります。1つのテーブルにはメール自体が含まれ(各行にはmsgId, sender, recipients, subject, body
などの列があります)、もう1つのテーブルには従業員によるメールの処理方法のデータが含まれます-メールにプロパティが割り当てられると、プロパティを持つ新しい行が2番目のテーブルに保存されます。
2番目のテーブルには列が含まれています:msgId, forTeam, notForTeam, processedByTeam
。従業員がメッセージを自分のチームに関連するものとしてマークするたびに、行は列にTEAMXX
値とともに保存されforTeam
ます。従業員が電子メールに対して他のアクションを実行するたびに、TEAMXX
値のある行が列に保存されprocessedByTeam
ます。
「未処理」ビューにメールを表示しようとしています。次の値を持つメール:
forTeam: null
notForTeam: everything different than 'TEAM01'
processedByTeam: everything different than 'TEAM01'
私はさまざまなクエリを作成しようとしていますが、それでも希望どおりに機能せず、気が狂います。正しいクエリに感謝します。
例:
メールのあるテーブル(Mails
):
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#アプリに、メールを「未処理」として表示するビューを持たせたいと思います。
- メール54はTEAM02のために最初に隠されました-彼らには見えないはずです
- メール54がTEAM01に割り当てられました-「このチームの」ビューに表示されるはずです
- メール54はTEAM01によって処理されました-「このチームの」ビューでは表示されないはずです
- メール53はTEAM01に割り当てられました-「このチームの」ビューに表示されるはずです(そして彼らだけに)
- メール53はTEAM01のために隠されていました-TEAM01には見えないはずです(そして前のアクションのために他の人には見えないはずです)
- メール56がTEAM01に割り当てられました-「このチーム」のTEAM01にのみ表示されるようになりました
- メール56はTEAM01によって処理されました-「このチーム」のTEAM01では非表示になります
したがって、両方のテーブルに現在のデータがある場合、最終的に、TEAM01は「未処理」ビューでのみ表示されます。
mail 55