我正在尝试从一个表中获取数据,其中包含来自第二个表的附加数据,但在第二个表中,我有许多记录连接到第一个表中的记录,我想要最新。
在第一张表中,我保留了产品,而我第二,我保留了数据的价格。我想要以实际(最新)价格购买产品。
产品表:
ID | NAME
---+----------
1 | "jacket"
2 | "pants"
价格表:
ID | PRODUCT_ID | DATE | PRICE
---+------------+------------+-------
1 | 1 | 2015-05-12 | 200
2 | 1 | 2015-07-12 | 100
3 | 2 | 2015-03-12 | 60
4 | 2 | 2015-08-12 | 90
预期结果:
1, "jacket", 100
2, "pants", 90
我该怎么做?
实际上我找到了解决方案 - 但是有2个子查询。看起来不太好。
答案 0 :(得分:2)
找出每个价格的最大日期,然后与其余表格进行内部联接。
SELECT aa.id, aa.name, bb.price
FROM products AS aa
INNER JOIN prices AS bb
ON aa.id = bb.product_id
INNER JOIN (
SELECT product_id, MAX(date) AS max_date
FROM prices AS cc
GROUP BY product_id
) AS _aa
ON aa.id = _aa.product_id
WHERE bb.date = _aa.max_date;