我有三个表:Orders,OrderAdditionalInfo,Invoices
我需要选择没有有效(或未取消发票)发票的(主要)订单。
字段:
订单 - >
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仍然是主要订单,并且表中添加了ID为11的新订单。 (我们获得了新的订单。)
2-不幸的是,在OrderAdditionalInfo表中添加了一行:
OrderID: 11
Variable: "Main Order ID"
Value: "10"
3-因此,我们可以知道订单11来自订单10。
您对选择匹配的订单有任何建议:
"主要订单" (不是来自其他订单)
和
"没有有效发票"
答案 0 :(得分:0)
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')