我正在使用 MySQL 来存储价格和单位数量可能会发生变化的产品信息,因此我需要以某种方式实现历史记录。考虑一下,我创建了一个表产品:ID、名称和表产品状态:ID、价格、单位、产品 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;
这也将返回我现在不想要的旧产品状态。
是否可以创建这样的查询或者是否有更好的方法来实现历史?
例如:
product(id,name): 1, dog 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