multiscripter
@multiscripter

Как из таблицы выбрать записи по столбцу, имеющие одни значения и не имеющие другие?

Всем здравствуйте!
Есть таблица, заполненная тестовыми данными:
insert into ticket (user_id, type) values (1, 1);
insert into ticket (user_id, type) values (1, 2);
insert into ticket (user_id, type) values (1, 3);
insert into ticket (user_id, type) values (1, 4);
insert into ticket (user_id, type) values (2, 1);
insert into ticket (user_id, type) values (2, 2);
insert into ticket (user_id, type) values (2, 3);
insert into ticket (user_id, type) values (3, 1);
insert into ticket (user_id, type) values (3, 2);
insert into ticket (user_id, type) values (4, 4);
insert into ticket (user_id, type) values (5, 2);
insert into ticket (user_id, type) values (5, 3);
insert into ticket (user_id, type) values (6, 3);
insert into ticket (user_id, type) values (7, 1);

Как выбрать все user_id, у которых, например, type 2 и 3 и не 1 и 4? То есть запрос должен вернуть user_id = 5.
Или выбрать все user_id, у которых, например, type 1 и 2 и не 3 и 4? То есть запрос должен вернуть user_id = 3.
Результат нужно сгруппировать по user_id.
  • Вопрос задан
  • 128 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
SELECT DISTINCT `user_id`
  FROM `ticket`
  WHERE `user_id` IN (SELECT `user_id` FROM `ticket` WHERE `type` = 2)
    AND `user_id` IN (SELECT `user_id` FROM `ticket` WHERE `type` = 3)
    AND `user_id` NOT IN (SELECT `user_id` FROM `ticket` WHERE `type` = 1)
    AND `user_id` NOT IN (SELECT `user_id` FROM `ticket` WHERE `type` = 4)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
СКМ Москва
До 75 000 руб.
SaveTime Москва
от 160 000 руб.
OFD.ru Москва
от 140 000 до 170 000 руб.
15 нояб. 2019, в 09:30
250000 руб./за проект
15 нояб. 2019, в 08:55
1000 руб./за проект