MySQL:如何实现产品价格和单位的历史

时间:2013-05-20 14:24:32

标签: mysql sql database

我使用MySQL来存储产品信息,其中单位的价格和数量可能会发生变化,所以我需要以某种方式实现历史记录。考虑一下我创建了一个表产品:ID,名称和表product_state:ID,价格,单位,product_id。我用最高ID识别最新的product_state。

如何创建数据库查询,以便让每个产品都处于当前状态?

我可以使用此查询获取单个产品:

SELECT * FROM product, product_state
WHERE product.id=%i AND product_state.product_id=product.id
ORDER BY product_state.id DESC LIMIT 1;

但是我需要在当前状态下获得一组所有产品,我不知道如何进行查询:

SELECT * FROM product, product_state
WHERE product.id = product_state.product_id
ORDER BY product_state.id DESC;

这也将返回我现在不想要的旧产品状态。

是否可以创建此类查询或是否有更好的方法来实现历史记录?

例如:

产品(id,name):1,狗 product_state(id,price,units,product_id):1,100,23,1 product_state(id,price,units,product_id):2,134,12,1

查询后的

结果应为:1,dog,2,134,12,1

1 个答案:

答案 0 :(得分:0)

SELECT * FROM product
  JOIN product_state ps on product.id = ps.product_id
WHERE ps.id = (select max(ps2.id) 
                 from product_state ps2 
                where ps2.product_id = ps.product_id) 
ORDER BY ps.id DESC;