需要MySQL查询建议

时间:2014-06-18 09:52:32

标签: mysql select-query

我有三个表: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。

您对选择匹配的订单有任何建议:

"主要订单" (不是来自其他订单)

"没有有效发票"

1 个答案:

答案 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')