I have a block user system:
Table a:
id_user | username
1 | A
2 | B
3 | C
4 | D
.... and so on
Table B:
id_block | user_request | user_banned
1 | 1 | 2
2 | 1 | 3
... and so on
Case # 1: When user A gets a list of users from table A, so user B hidden from him and user C.
Case # 2: When user B gets the list of users from table A, so user A is hidden from him.
Case # 3: When user C gets a list of users from table A, so user A is hidden from him.
Case # 4: When user D gets the list of users from table A, so he gets all the users.
So far I have tried this:
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)
As a result, User B and C are hidden! Big!
, 2, C. , A!
4, A, B C.
:
sqlfiddle 1
sqlfiddle 2
sqlfiddle 3
sqlfiddle 4
P.D. , , , .