2015-11-02 64 views
1

我想從第二個表中的附加數據獲取數據,但在第二個表中我有很多記錄連接到第一個表中的記錄,我想採取最新的。左加入到最新的行

在第一張表我保留產品,我第二我保持與數據的價格。我想以實際(最新)價格購買產品。

產品表:

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個子查詢。看起來不太好。

回答

2

查找每個價格的最大日期,然後與其餘表格進行內部連接。

SQL Fiddle

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

爲什麼加入一個額外的選擇? –

+0

這對我來說。 –

+1

ORDER BY是多餘的 – Strawberry