mysql使用上一版本的值选择所有订单

时间:2013-08-01 11:57:27

标签: mysql

这是我的应用程序中的数据库模型。 使用php我正在创建所有订单列表

SELECT id, date from orders

之后,我使用另一个SELECT来选择此订单的最新修订版本的数据

SELECT name, material, producer, color from revisions WHERE id_order = id ORDER BY date LIMIT 1

然后我收到所有订单,只提供订单的最新修订信息。

是否可以创建SELECT以仅在一个查询中执行此操作?我是JOINing表的新手..模型很容易创建,但我不知道如何在一个查询中选择所有这些信息。我需要这样的东西:

SELECT id, date (order table), name (revision table), 
name of material (material table), 
name of producer (producer table), name of color (color table).

这将创建所有订单的列表,其中包含仅来自最新修订版的一些信息。

感谢所有回复

DB schema

2 个答案:

答案 0 :(得分:0)

您需要的是两个表的连接。

SELECT o.id, o.date, r.name, r.material, r.producer, r.color 
FROM orders o 
JOIN revisions r ON r.id_order = o.id 
ORDER BY date 
LIMIT 1

答案 1 :(得分:0)

此方法汇总了修订,为给定订单选择最后一个的日期。然后它将这些信息加入:

SELECT r.name, r.material, r.producer, r.color
from revisions r join
     (select r.id_order, max(date) as maxdate
      from revisions r
      group by r.id_order
     ) rmax
     on rmax.id_order = r.id_order and
        rmax.maxdate = r.date;