我有一个名为 users 的表,其中有一个名为 Bob 的用户,如下所示:
username
Bob
我有另一个名为 mail 的表,其中包含以下行:
sender | receiver
Marley | Bob
Saget | Bob
我有另一个名为 block 的表,其中包含以下行:
blocker | blocked
Marley | Bob
我想从表用户中选择用户以及他们收到的消息数量,但忽略来自被阻止用户的消息。所以结果应该是这样的:
users.username | count_mail
Bob | 1
因此,正如您所看到的,我需要让 Bob 以及他收到的消息数量只有 1 条,因为 Bob 阻止了 Marley,所以 Saget 的消息应该是唯一的 1 条。
我使用以下查询,但它什么也不返回:
SELECT user, COUNT(mail) AS count_mail FROM users
LEFT JOIN block ON (block.blocker = users.username)
LEFT JOIN mail ON (mail.receiver = users.username
AND mail.sender <> block.blocked)
谢谢