0

我有三个表:Orders、OrderAdditionalInfo、Invoices

我需要选择没有有效(或未取消)发票的(主要)订单。

领域:

订单->

OrderID int(11)

订购附加信息 ->

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 派生的。

您对选择匹配的订单有什么建议:

“主订单”(不是从另一个订单派生的)

“没有有效发票”

4

1 回答 1

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')
于 2014-06-20T11:05:42.940 回答