繁体   English   中英

如何在MYSQL / SQL中查询此表结构中的顺序结果?

[英]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)。 如何在这种情况下构建查询?

我已经考虑过了,但它不在一个查询中,我想知道有没有办法在一个查询中创建它? 谢谢

更新

我的尝试查询是这样的

  1. 通过create_date按order_id顺序从状态组中选择order_id
  2. 在PHP中,对于每个order_id,从order中选择*,其中order_id =该id并加入成员表

尝试这个:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM