Требуется запрос MySQL

У меня есть три таблицы: заказы, OrderAdditionalInfo, счета

Мне нужно выбрать (основные) заказы, которые не имеют действительного (или не отмененного) счета.

Поля:

Заказы ->

OrderID int(11)

OrderAdditionalInfo ->

DetailID int(11)
OrderID int(11)
Variable varchar(255)
Value varchar(255)

Счета ->

InvoiceID int(11)
OrderID int(11)
Cancelled tinyint(4) //if cancelled is 1 then this invoice is invalid.

ВАЖНО: все запутывает то, что один заказ можно разделить на несколько заказов.

Например:

Когда мы делим заказ с OrderID: 10

1- Заказ 10 остается основным заказом, и в таблицу добавляется новый заказ с идентификатором 11. (Мы получаем новый заказ.)

2- К сожалению, в таблицу OrderAdditionalInfo добавлена ​​строка:

OrderID: 11
Variable: "Main Order ID"
Value: "10"

3. Итак, мы можем знать, что порядок 11 был получен из порядка 10.

Есть ли у вас какие-либо предложения по выбору заказов, которые соответствуют:

"основной заказ" (не является производным от другого заказа)

а также

"не имеет действительного счета"

1 ответ

Решение
select * from orders o where o.OrderId not in (select OrderId from Invoices) and o.OrderId not in (select OrderId from OrderAdditionalInfo oi where oi.Variable = 'Main Order ID')
Другие вопросы по тегам