У меня есть система Блок пользователя:LEFT JOIN Таблица A зависит от таблицы B
Таблица А:
-------------------
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
Case # 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 скрыты! Большой!
Но, когда вы меняете Идентификатор пользователя на пример 2, тогда скрываются символы «Пользователь» и «С». Не здорово, должен быть только скрытый пользователь A!
Когда вы меняете Идентификатор пользователя на 4, тогда скрывается пользователь A, B и C.
я сделать несколько примеров для этого случая:
P.D. Я знаю, я могу сделать два запроса, чтобы иметь решение для этого, но для этого должно быть решение.
[там я идти] (http://sqlfiddle.com/#!2/02377/111) – Wrikken