我不确定我的问题是否清楚,但我需要的是相当复杂的查询。我自己无法把它放在一起。
我们有表格orders
、order_items
、products
和。Orders 是主订单表。Order_items 表以特定顺序保存已订购产品的列表。Products 是主要的 products 表,deliveries/delivery_items 表保存已交付的 order_items 列表(我们可以交付整个订单或仅部分交付)。deliveries
delivery_items
这是“精简”表结构:
订单:
ID ORDER_NUMBER DELIVERY_DATE STATUS
-------------------------------------------------
1 2013-00001 Unixtimestamp Closed
2 2013-00002 Unixtimestamp Open
...
产品:
ID CODE
-----------------------
1 Product 1
2 Product 2
3 Product 3
...
订购物品:
ID ORDER_ID PRODUCT_ID QTY
-----------------------------------------
1 1 1 2
2 1 2 5
3 1 3 1
4 2 3 10
交货:
ID ORDER_ID DELIVERY_NUMBER TYPE
---------------------------------------------
1 1 2013-00001 Full
2 2 2013-00002 Partial
...
DELIVERY_ITEMS:
ID DELIVERY_ID ORDER_ITEM_ID QTY
------------------------------------------
1 1 1 2
2 1 2 5
3 1 3 1
4 2 4 5
...
我们的生产需求视图在即将到来的一周计划中按数量列出所有未交付的订单项(产品)。我需要的是这样的(这里的数量是随机的):
Product Overdue W0 W1 W2 W3 W4 W5 Later Total
-------------------------------------------------------------------------
Product 1 1 2 0 0 0 0 0 0 3
Product 2 0 3 5 1 0 0 0 4 13
Product 3 2 4 0 7 5 0 0 0 18
...
整个视图基于当前时间和订单的 delivery_date 字段。该查询需要从所有未结订单中获取订购的产品数量,检查其中一些产品是否可能已经交付并减去交付数量,最后对结果数量进行排序,如上所示。
更新:这是具有上述结构的 SQL Fiddle 和一些数据http://sqlfiddle.com/#!2/88891/4