-2

这是我的应用程序中的数据库模型。使用 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).

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

非常感谢您的所有回复

数据库模式

4

2 回答 2

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
于 2013-08-01T12:02:08.433 回答
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;
于 2013-08-01T12:03:15.713 回答