Запрос MySQL для поиска всех столбцов, где 2 столбца имеют один и тот же столбец 1

Я не совсем уверен, как это выразить, и вообще я новичок в SQL, но в основном в моей таблице group_memberships у меня есть столбцы user_id, group_id и permission_level. Я хочу посмотреть, принадлежат ли два пользователя (user1 и user2) к одной и той же группе (т. е. они оба являются частью одной и той же группы) и если user1 имеет permission_level из 1, а user2 имеет permission_level из 0 ( т.е. user1 является администратором user2).

Этот запрос может быть довольно интенсивным, но я не уверен. Мне трудно даже гуглить, как это сделать.


person Oscar Godson    schedule 24.03.2015    source источник


Ответы (1)


Вы можете выполнить самостоятельное присоединение:

SELECT
 *
FROM group_memberships gm1 -- for the "first" user
JOIN group_memberships gm2 ON TRUE -- for the "second" user
 AND gm1.group_id = gm2.group_id
 AND gm1.user_id != gm2.user_id -- prevent joining to the same tuples
WHERE TRUE
AND gm1.permission_level = 0
AND gm2.permission_level = 1
-- additional conditions can go here, eg:
-- AND gm1.userid = X
-- AND gm2.userid = Y
person murison    schedule 24.03.2015
comment
Ооо, думаю, мне нравится 95% там. Я думаю, что в вашем запросе выше тоже есть опечатка. Я думаю, что AND gm1.user_id != gm2.user_id это то, что вы хотели? Единственное, с чем я сейчас возился, это как установить определенные user_id для поиска. Мне не нужны все совпадения только с user1 и user2. Спасибо! - person Oscar Godson; 24.03.2015
comment
Ну конечно; естественно. Спасибо что подметил это. починил это. также добавлены дополнительные условия - person murison; 24.03.2015