[英]How to query the order result in this table structure in MYSQL/ SQL?
我目前正致力于电子购物车项目,需要记录这个变化
结构是这样的:
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
请注意,例如,我会在订单更新时存储状态时间。 所以应该有秩序的几个状态,其结果应该只包含最新的状态,所以我需要得到最大(CREATE_DATE)。 如何在这种情况下构建查询?
我已经考虑过了,但它不在一个查询中,我想知道有没有办法在一个查询中创建它? 谢谢
更新
我的尝试查询是这样的
尝试这个:
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;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.