我有4张桌子
Order(OrderId,OrderDate,Firm,ConsumerId)
OrderProductDetails(OrderId,ProductId,Firm,Quantity,Rate,Fulfilled,PendingQuantity) [fulfilled is boolean]
Product(ProductId,ProductName)
Consumer(ConsumerId,ConsumerName)
我想获取那些未完全履行的订单(OrderId,OrderDate,ConsumerName)
。我尝试了很多,但无法使它工作。查询看起来很简单,但我不知道它会有多复杂。
答案 0 :(得分:1)
根据您提供的信息,以下内容应该有效。
select order.orderid, order.orderdate, consumers.consumername
from order
inner join orderproductdetails on orderproductdetails.orderid = order.orderid
inner join consumers on consumers.consumerid = order.consumerid
where orderproductdetails.fulfilled = 0
我假设你有一个'consumer'表,而boolean'false'用值0表示。
答案 1 :(得分:0)
以下查询应该可以正常工作
注意:
1)我已将Order表重命名为OrderT,
2)重命名消费者 - > ConsumerT
SELECT DISTINCT OrderProductDetails.OrderId,OrderT.OrderDate,ConsumerT.ConsumerName FROM OrderProductDetails,ConsumerT INNER JOIN OrderT ON ConsumerT.ConsumerId = OrderT.ConsumerId WHERE(([OrderProductDetails]。[Fulfilled] = 0)AND([OrderProductDetails]。[OrderId] = [OrderT]。[OrderId])); 的
查询背后的逻辑是:您希望数据主要来自两个表OrderT和ConsumerT。但是所有数据都依赖于OrderProductDetails.Fulfilled和last,但只有一个是不满足的订单,只需要那些消费者名称。 创建查询时的MS Access Design视图有很多帮助。