複数のテーブルを結合しようとしていますが、テーブルの 1 つに異なる日付の partid の複数のレコードがあります。最新の日付でレコードを取得したい。
以下にいくつかのテーブルの例を示します。
Table: MyParts
Partid Partnumber Description
1 ABC-123 Pipe
2 ABC-124 Handle
3 ABC-125 Light
Table: MyPrices
Partid Price PriceDate
1 $1 1/1/2005
1 $2 1/1/2007
1 $3 1/1/2009
2 $2 1/1/2005
2 $4 1/1/2006
2 $5 1/1/2008
3 $10 1/1/2008
3 $12 1/1/2009
特定の部品の最新の価格を知りたい場合は、次のようにします。
SELECT * FROM MyPrice WHERE PriceDate = (SELECT MAX(PriceDate)
FROM MyPrice WHERE Partid = 1)
ただし、最初に結合を行い、1 つだけでなくすべての部品の正しい価格を取得したいと考えています。これは私が試したことです:
SELECT * FROM MyParts LEFT JOIN MyPrice ON MyParts.Partid = MyPrice.Partid WHERE
MyPart.PriceDate = (SELECT MAX(PriceDate) FROM MyPrice)
テーブル全体の最高価格日を使用するため、結果は間違っています。
SELECT * FROM MyParts LEFT JOIN MyPrice ON MyParts.Partid = MyPrice.Partid WHERE
MyPart.PriceDate = (SELECT MAX(PriceDate) FROM MyPrice WHERE MyPrice.Partid =
MyParts.Partid)
それはエラーになります。
望む結果を得るにはどうすればよいか。