Задать вопрос
frost18
@frost18
Программист PHP

Как сделать выборку из базы MySql по условию — только если все записи имеют такое значение?

Есть таблица "order":

id | status_id | user_id
1 | 0 | 1
2 | 1 | 1
3 | 0 | 2
4 | 0 | 2
5 | 0 | 3
6 | 1 | 4

Нужно вывести все user_id у которых ВСЕ заказы со статусом 0, то есть результат должен быть:
2 и 3
Или только со статусом 1, то результат должен быть:
4
  • Вопрос задан
  • 583 просмотра
Подписаться 2 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 4
@RidgeA
Простой, но, скорее всего, не лучший вариант.
SELECT * FROM table GROUP BY user_id HAVING SUM (status_id) = 0
Ответ написан
Госпиди:
select user_id from order where status_id = '0';

или

select user_id from order where status_id = '1';
Ответ написан
@sAndreas
Юзер
SELECT user_id FROM table
GROUP BY user_id
HAVING SUM (ABS(status_id)) -COUNT(status_id)=0
or
HAVING SUM (ABS(status_id)) = COUNT(status_id)
Выведет 2,3,4
Ответ написан
Комментировать
@nozzy
Symfony, Laravel, SQL, Python, Telegram
Как-то так:
select 
distinct
t1.user_id
from table t1
left join 
 (select distinct 
  user_id 
  from table 
  where status_id <> 0
 ) t2 on t2.user_id = t1.user_id
where t1.status_id = 0
and t2.user_id is null
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы