Требуется запрос 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')