ВЫБЕРИТЕ данные из нескольких таблиц, если требование выполнено во второй таблице - PullRequest
0 голосов
/ 17 января 2019

заголовок не так хорошо описывает мою проблему:

У меня есть 2 таблицы, одна для заказов, другая для продукта. У заказа может быть n продуктов, связанных с ним.

Я хочу выбрать те заказы, где все их связанные продукты имеют статус (атрибут продукта), больший или равный x. (Итак, я знаю, что каждый продукт моего заказа «готов» и заказ может быть обработан далее)

Каждый заказанный товар имеет OrderID

Какие-нибудь советы?

e: только что начал с SQL, не бей меня, если это глупый вопрос

1 Ответ

0 голосов
/ 17 января 2019

Это вопрос мышления. Вы должны найти «двойную» форму вашего вопроса (-> двойное отрицание).
Вам нужно найти все заказы, по крайней мере, на одной строке, которая еще не готова.

Предполагается, что ваши таблицы являются общими:
Порядок ( ID , бла, бла, бла) и Строка заказа ( orderID, строка # , статус, бла, бла) FK orderid ссылки порядок .
Вы можете использовать эту заглушку:

Select *
from orders O
where not exists ( select * from order_line OL 
                   where ol.orderID=O.orderID  --binding with outer query
                   and status <> 'ready' 
                  )

ПОБОЧНОЕ ПРИМЕЧАНИЕ: мой запрос будет также выдавать пустые ордера, для фильтрации их просто добавьте к внешнему запросу and exists (select * from orderline oe where oe.orderid=o.orderid)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...