Задать вопрос

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

всем привет, у меня есть таблица с исполнителями и заказами, мне нужно взять свободных исполнителей, то есть тех у кого нет заказов или вообще их никогда не было (то есть новых)
SELECT performer."id", performer."user", "portfolio", "rating", "balance", performer."created_at"
FROM performer
         INNER JOIN performer_subject ps ON performer.id = ps.performer_id AND ps.subject_id = :subject_id
         INNER JOIN "order" o ON performer.id = o.performer and o.completed = true
ORDER BY rating

я делаю вот такой запрос, но он исключает тех у кого вообще никогда не было заказов, если второй JOIN менять на LEFT JOIN, то он берет тех у кого есть не завершенные, как его изменить?
  • Вопрос задан
  • 60 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
iMedved2009
@iMedved2009
Не люблю людей
У тех у кого нет заказов в состоянии order.completed = false.
SELECT performer."id", performer."user", "portfolio", "rating", "balance", performer."created_at"
FROM performer
         INNER JOIN performer_subject ON performer.id = performer_subject.performer_id AND performer_subject.subject_id = :subject_id
where not exists(select 1 from "order" where performer.id = order.performer and order.completed = false)
ORDER BY rating


У которых вообще не было заказов
SELECT performer."id", performer."user", "portfolio", "rating", "balance", performer."created_at"
FROM performer
         INNER JOIN performer_subject ON performer.id = performer_subject.performer_id AND performer_subject.subject_id = :subject_id
where not exists(select 1 from "order" where performer.id = order.performer)
ORDER BY rating
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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