我有3张桌子:
订单会经历多个州。所以每个州都有table_orderstatus中的条目。 Statusdate将在那里,但在此示例中未显示。
实施例
table_orders - orderid,ordervalue;
1- 500
2- 1000
3- 8000
4- 10000
table_orderstatus - orderid,statusid,statusdate; (orderid,statusid)
1- 1
1- 2
2- 1
2- 3
3- 1
3- 3
3- 4
4- 1
4- 3
4- 4
4- 5
5- 1
table_statusvalues - statusid,statusvalue;
1- NEW
2- CANCEL
3- CONFIRM
4- DISPATCHED
5- DELIVERED
我想获取所有订单的order_id和最后一个状态值(不是id)。
1- CANCEL
2- CONFIRM
3- DISPATCHED
4- DELIVERED
5- NEW
我尝试了多种方法来实现同样的目标。但是,coudn没有得到预期的结果。谁可以帮我这个事?
答案 0 :(得分:1)
最后的价值:
select orderid, statusvalue from (
select orderid, max(statusid) laststatus
from table_orders o
inner join table_orderstatus s on s.orderid = o.orderid
group by o.orderid
) l
inner join table_statusvalues on statusid = laststatus
答案 1 :(得分:0)
试试这个
SELECT T.orderid, S.statusvalue
FROM (
SELECT O1.orderid, O2.statusid
FROM _orderstatus O1
WHERE O1.statusdate > (
SELECT MAX(O2.statusdate)
FROM _orderstatus O2
WHERE O2.orderid = O1.orderid
AND O2.statusdate <> O1.statusdate
)
) T, _statusvalues S
WHERE T.statusid = S.statusid