VerbAlexVlad
@VerbAlexVlad
Программист-любитель

Как сформировать запрос?

Есть три таблицы:
63103d227f7ec207355019.png
Каждому пользователю присвоены статусы. Статусов у каждого может быть несколько. Как мне получить пользователя, у которого, нет статуса под id = 1? В данном случае это должен быть Петя.
Не дает результатов:
SELECT `users`.* FROM `users` 
LEFT JOIN `user_statuses` ON `users`.`id` = `user_statuses`.`user_id` 
WHERE `user_statuses`.`status_id` NOT IN 1
  • Вопрос задан
  • 83 просмотра
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
SELECT `u`.*
  FROM `users` AS `u`
  LEFT JOIN `user_statuses` AS `us`
    ON `us`.`user_id` = `u`.`id` AND `us`.`status_id` = 1
  WHERE `us`.`status_id` IS NULL
или
SELECT *
  FROM `users`
  WHERE `id` NOT IN (
    SELECT `user_id`
      FROM `user_statuses`
      WHERE `status_id` = 1
  )
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@alexalexes
select u.*
  from users u
where not exists(
            select 999
              from user_statuses us
            where us.user_id = u.id 
                and us.status_id = 1
             )
Ответ написан
Ваш ответ на вопрос

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

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