Я пытаюсь объединить несколько таблиц, но в одной из таблиц есть несколько записей для партии с разными датами. Я хочу получить запись с самой последней датой.
Вот несколько примеров таблиц:
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)
Однако я хочу сначала выполнить соединение и получить правильную цену для всех деталей, а не только для одной. Вот что я пробовал:
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)
Это ошибки.
Что я могу сделать, чтобы получить желаемые результаты.