我有一个封锁用户系统:
A表:
-------------------
id_user | username
-------------------
1 | A
-------------------
2 | B
-------------------
3 | C
-------------------
4 | D
-------------------
.... and so on
表格 B:
--------------------------------------
id_block | user_request | user_banned
--------------------------------------
1 | 1 | 2
--------------------------------------
2 | 1 | 3
--------------------------------------
... and so on
案例1:当用户A从表A获取用户列表时,用户B和用户C对他不可见。
案例2:当用户B从表A获取用户列表时,用户A对他不可见。
案例3:当用户C从表A获取用户列表时,用户A对他不可见。
案例4:当用户D从表A获取用户列表时,它获取所有用户。到目前为止,我已经尝试了这个:
SELECT t1.id_user, t1.username
FROM user t1
LEFT JOIN block_user t2
ON (t2.user_request = 1 AND t2.user_banned = 1)
WHERE t1.id_user NOT IN
(SELECT user_request FROM block_user WHERE user_request = 1 )
AND t1.id_user NOT IN
(SELECT user_banned FROM block_user WHERE user_banned = 1)
结果是用户B和C被隐藏了!太好了!
但是,当您将用户ID更改为示例2时,用户A和C被隐藏。不太好,应该只隐藏用户A!
当您将用户ID更改为4时,用户A、B和C都被隐藏。
我为这个案例做了一些示例:
P.D. 我知道,我可以进行两个查询来解决这个问题,但必须有一个解决方案。