【发布时间】:2019-02-07 19:24:19
【问题描述】:
我有一个记录和处理产品订单的应用程序。从最初创建订单到最终提交订单以供履行,其 1 个或多个属性可能会被 1 个或多个员工在此过程中更改 1 次或多次。我将订单号和开始订单的员工存储在一个表中,然后将所有订单的所有更改(包括开始详细信息)存储在另一个表中。像这样的:
订单
ORDER_ID EMPLOYEE
1 dan
2 dan
3 fred
Order_Activity
ACTIVITY_ID ORDER_ID UPDATER DATE QTY SIZE COLOR STATUS
1 1 dan 1/1/2017 5 m red new
2 1 dan 1/3/2017 15 m red updated
3 1 tom 1/9/2017 15 l red submitted
4 2 dan 1/1/2017 25 l blue new
5 2 tom 1/1/2017 25 l blue submitted
6 3 fred 1/9/2017 15 s red new
7 3 fred 1/10/2017 5 l red updated
8 3 fred 1/11/2017 5 m red updated
9 3 tom 1/11/2017 5 m red submitted
我需要显示发起订单的员工最近的 2 个订单以及订单的属性(数量、尺寸和颜色),就像状态更改为“已提交”时一样。
如果我只需要 ONE 订单(最近的),我想我可以使用:
SELECT
Orders.EMPLOYEE,
Order_Activity.QTY,
Order_Activity.SIZE,
Order_Activity.COLOR FROM Orders
INNER JOIN Order_Activity
ON Orders.ORDER_ID = Order_Activity.ORDER_ID
ORDER BY Order_Activity.date DESC LIMIT 1
但是,我很难想象如何在一个查询中找到具有不同值 ORDER_ID 的下一条记录。
任何人都可以帮助我进行查询以生成类似的内容(基于上面提供的数据):
ORDER_ID EMPLOYEE QTY SIZE COLOR
3 fred 5 m red
1 dan 15 l red
或者甚至不能在 1 个查询中完成?
【问题讨论】:
-
在 MS SQL 中我应该告诉你下一个查询: