Ich versuche, mehrere Tabellen zu verbinden, aber eine der Tabellen hat mehrere Datensätze für eine partid mit unterschiedlichen Daten. Ich möchte den Datensatz mit dem aktuellsten Datum abrufen.
Hier sind einige Beispieltabellen:
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
Wenn ich nur den letzten Preis für ein bestimmtes Teil finden wollte, könnte ich das tun:
SELECT * FROM MyPrice WHERE PriceDate = (SELECT MAX(PriceDate)
FROM MyPrice WHERE Partid = 1)
Ich möchte jedoch zuerst eine Verbindung herstellen und den korrekten Preis für alle Teile zurückerhalten, nicht nur für eines. Das habe ich versucht:
SELECT * FROM MyParts LEFT JOIN MyPrice ON MyParts.Partid = MyPrice.Partid WHERE
MyPart.PriceDate = (SELECT MAX(PriceDate) FROM MyPrice)
Die Ergebnisse sind falsch, da das höchste Preisdatum der gesamten Tabelle genommen wird.
SELECT * FROM MyParts LEFT JOIN MyPrice ON MyParts.Partid = MyPrice.Partid WHERE
MyPart.PriceDate = (SELECT MAX(PriceDate) FROM MyPrice WHERE MyPrice.Partid =
MyParts.Partid)
Das ist ein Fehler.
Was kann ich tun, um die gewünschten Ergebnisse zu erzielen?