2013-08-01 39 views
-2

这是我的应用程序中的数据库模型。 用PHP,我创建的所有订单列表这样mysql使用上次修订版的值选择所有订单

SELECT id, date from orders 

和林后,使用其他选择,只选择最后一次修改数据的顺序

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

+3

[参考这(http://dev.mysql.com/doc/refman/5.0/en/join.html),并尝试自己。没有勺子喂:)) – Akhil

+0

曾听说过一个** JOIN **,谷歌它! – AKDADEVIL

+0

请查看http://en.wikipedia.org/wiki/Join_%28SQL%29或http://www.w3schools.com/sql/sql_join.asp。这些是理解你将得到的各种答案的好起点。 –

回答

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; 
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 
+0

非常感谢,但是这会返回所有订单修订版的数据,而且我只需要显示上次添加的修订版中的数据 – scooti