0

我有两张桌子。第一家店orders

id | date | status

第二个表存储revisions(对订单的更改):

name | date | product | producer | etc...

我正在使用此查询显示订单:

SELECT id, date from orders

然后,我使用此查询仅显示每个订单的最新修订:

SELECT name, product, producer from revisions WHERE order_id = id ORDER BY date LIMIT 1

两个问题:

  • 我怎样才能将这些组合成一个单一的SELECT
  • 如何namerevisions表格中过滤所有订单?
4

1 回答 1

0

你想要分组最大值

SELECT o.id, o.date,
       r.name, r.product, r.producer
FROM   orders o JOIN (revisions r NATURAL JOIN (
         SELECT   order_id, name, MAX(date) date
         FROM     revisions
         WHERE    name = ?
         GROUP BY order_id
       ) t) ON r.order_id = o.id

请注意,如果单个订单的多个修订版具有相同的 值revisions.date,那么它们都将在结果中返回(而您之前的方法LIMIT 1将返回一个不确定的值)。如果你想更有选择性,你需要决定选择哪个结果的标准。

于 2013-07-28T08:07:08.643 回答