Как сделать выборку в MYSQL группируя один столбец и выбирая кол-во значений другого?
Добрый день!
Помогите пожалуйста, голову уже сломал
Есть вот какая таблица:
id | type | id_work
----------------------
1 | 2 | 1000
2 | 4 | 1000
3 | 2 | 2000
4 | 2 | 2000
5 | 4 | 3000
6 | 4 | 3000
7 | 2 | 3000
8 | 4 | 3000
9 | 4 | 3000
Мне нужно выбрать id записей, у которых при одинаковых значениях столбца id_work в столбце type обязательно было хоть по одному значение 2 и 4.
То есть из представленного примера таблица мне нужны запист в id 1,2,7,8,9
Пояснение:
1,2 нужны потому что они относятся к работе в id_work = 1000 а в графе type есть значение 2 и 4 как минимум по одному разу (2 - один раз, 4 - один раз)
7,8,9 нужны потому что они относятся к работе в id_work = 3000 а в графе type есть значение 2 и 4 как минимум по одному разу (2 - один раз, 4 - два раза)
Выясняем, для каких значений id_work выполняется условие наличия хотя бы по одному значению для type из множества (2, 4)
Для найденных значений id_work выбираем полный набор данных для type из множества (2, 4)
На практике это означает запрос использующий подзапрос для п. 1 и использование inner join дл п. 2:
SELECT
T.id
FROM
(
SELECT
id_work
FROM
T
WHERE
type IN (2, 4)
GROUP BY
id_work
HAVING
count(distinct type) = 2
) AS filteredIdWork
INNER JOIN
T
ON
T.id_work = filteredIdWork.id_work
AND T.type IN (2, 4)