2015-03-24 2 views
0

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

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

ответ

2

Вы можете сделать автообъединение:

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 
+0

Оооо, думаю, им, как 95% там. Я думаю, что в вашем запросе тоже есть опечатка. Я думаю, '' и gm1.user_id! = Gm2.user_id' - это то, что вы хотели? Единственное, с чем я сейчас сталкиваюсь, - это установить конкретный 'user_id' для поиска. Я не хочу совпадений _all_ этого только user1 и user2. Спасибо! –

+0

да, конечно. Спасибо что подметил это. починил это. также добавлены дополнительные условия – murison

Смежные вопросы