我目前正在处理电子购物车项目,需要记录tranaaction
结构是这样的:
order
------
id
order_id
* member_id
member
------
id
member_id
status
--------
id
description
* order_id
create_date
因此,状态是存储订单更改状态,例如当收到订单时,我添加订单,并添加状态和描述100< ==我定义并硬编码。如果订单已交付,那么我将再插入一个200< ==也是我定义的状态。
然后,问题是,如何查询这样的结果?
(Desc) create_date order_id member-id status_description
e.g.
2014 06 13 05:00:00 #11111 #12345 order_receive
2014 06 13 03:00:00 #15555 #12222 order_deliver
注意,例如我会在订单更新时存储状态时间。因此,订单应该有多个状态,结果应该包含最新状态 ,所以我需要获取max(create_date)。如何在这种情况下构建查询?
我已经考虑过了,但它不在一个查询中,我想知道有没有办法在一个查询中创建它?感谢
更新
我的尝试查询就像这样
答案 0 :(得分:2)
试试这个:
SELECT src.max_date,
src.order_id,
src.member_id,
CASE
WHEN s1.description = 100 THEN 'order_receive'
WHEN s1.description = 200 THEN 'order_deliver'
END AS status_description FROM
(SELECT MAX(s.create_date) max_date, s.order_id , o.member_id
FROM status s
JOIN `order` o ON o.order_id = s.order_id
GROUP BY s.order_id, o.member_id) src
JOIN status s1 ON s1.create_date = src.max_date;