Мне нужна помощь с некоторым кодом
У меня есть таблица базы данных под названием «материал», и у меня есть эта информация:
+------+-------------+---------------------+ | id | member_id | group_id | +------+-------------+---------------------+ | 1 | 11 | aa | +------+-------------+---------------------+ | 2 | 22 | aa | +------+-------------+---------------------+ | 3 | 33 | aa | +------+-------------+---------------------+ | 4 | 44 | bb | +------+-------------+---------------------+ | 5 | 55 | bb | +------+-------------+---------------------+ | 6 | 66 | bb | +------+-------------+---------------------+
Мне нужно найти идентификатор группы, если я ищу всех 3 членов из одной группы
Что-то вроде:
SELECT group_id FROM stuff WHERE member_id=11 and member_id=22 and member_id=33
Я знаю, что запрос не валит, но я не знаю, как сделать его действительным.
Большое спасибо.
Эта проблема называется Relational Division
.
SELECT group_id FROM stuff WHERE member_id IN (11,22,33) GROUP BY group_id HAVING COUNT(*) = 3
если member_id
не уникален для каждого group_id
, вам нужно иметь DISTINCT
, чтобы считать только уникальные значения.
SELECT group_id FROM stuff WHERE member_id IN (11,22,33) GROUP BY group_id HAVING COUNT(DISTINCT member_id) = 3
Дополнительные варианты этой ссылки: