2016-01-16 97 views
0

我有3个表:如何从表MYSQL获取最后输入的ID号

订单经历了多个状态。所以每个状态都可以在table_orderstatus中输入。状态日期将在那里,但在此示例中未显示。

示例

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 

我尝试了多种方法来实现相同。但是cound't没有得到预期的结果。谁可以帮我这个事?

回答

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 
相关问题