次のようなBobというユーザーを持つusersというテーブルがあります。
username
Bob
次の行を持つmailという別のテーブルがあります。
sender | receiver
Marley | Bob
Saget | Bob
次の行を持つblockという別のテーブルがあります。
blocker | blocked
Marley | Bob
テーブルユーザーと受信したメッセージの数からユーザーを選択したいのですが、ブロックされたユーザーからのメッセージは無視します。したがって、結果は次のようになります。
users.username | count_mail
Bob | 1
ご覧のとおり、ボブがマーリーをブロックしてから受信したメッセージの数は1つだけなので、サゲットによるメッセージは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)
ありがとう