我得到这个查询工作问题未读邮件数,因此其基本思想是:获取与加入
- 我有消息表,我想跟踪用户是否已阅读邮件或没有。注:多个用户可以收到同样的消息,所以读消息只需添加列是不是一种选择
- 每个消息是在一个线程(有一栏的thread_id)
- 我有另一个表
user_read_message
这增加了记录每当有人读取消息(user_id
,message_id
,read
)
我想要得到的未读邮件数在特定线程的用户。我试图沿着这些线路的东西,但我无法得到它的工作:
SELECT m.thread_id, urm.user_id, urm.read
FROM sup_messages as m
LEFT OUTER JOIN user_read_message as urm ON m.id = urm.message_id
WHERE m.thread_id = 76852 AND urm.user_id = 1337;
假若它的工作选择中的所有消息的thread_id 76852然后加入user_read_message
其中user_id
是1337和消息,他没有看过将简单地有null
。然后我会以某种方式计算读数是0还是NULL
。
ps。如果有更好的想法如何建模,请让我知道!
这是最奇怪的查询我所见过的,但它的工程!你能详细解释一下吗? (将尽快接受:)) – user50992 2014-11-21 17:33:37
我添加了一个解释。希望有帮助。 – Tom 2014-11-21 17:34:17
是的,它有一点帮助,我可以问为什么有1337 AS user_id?它也可以没有它。哦,我明白了,我甚至不知道在ON声明后我可以做比1更多的比较。 – user50992 2014-11-21 17:35:46