我有两个表,学生信息和学生信息
我的问题是我无法让查询运行,因此我可以说全局“(用户)有 4 个未读邮件”
I've created a mysqlfiddle here
我认为我已经正确地获得了第二个查询,但是我希望有人确认它的正确性。它产生正确的数字,但我不确定。请有人可以帮助我实现对两种不同计数的正确处理吗?
答案 0 :(得分:0)
您的第二个查询是正确的。要使其成为全局变量,只需删除线程ID where条件。您将需要对学生邮件收件人的索引。
答案 1 :(得分:0)
我将对您的第一个查询进行如下表述(对更改进行评论):
SELECT COUNT(*) FROM `student-messages` t1
LEFT JOIN `student-messages-seen` t2
ON t2.messageID = t1.id
AND t2.userID = t1.recipient -- moved from the WHERE clause
WHERE
t1.recipient = 1001
-- AND t2.userID = 1001 -- moved to the ON part of the JOIN
AND t2.id IS NULL -- fiter on unread messages
ORDER BY t1.ts DESC;
第二个查询本质上是相同的,只是在线程上有一个额外的过滤器:
SELECT COUNT(*) FROM `student-messages` t1
LEFT JOIN `student-messages-seen` t2
ON t2.messageID = t1.id
AND t2.userID = t1.recipient
WHERE
t1.recipient = 1001
AND t1.thread = 69
AND t2.id IS NULL
ORDER BY t1.ts DESC;