Angenommen PRICES.date
ein DATETIME-Datentyp ist, verwenden Sie:
SELECT pd.id,
pd.name,
pr.price
FROM PRODUCTS pd
LEFT JOIN PRICES pr ON pr.id = pd.id
AND DATE(pr.date) = CURRENT_DATE
Ich habe die DATE-Funktion um den Zeitteil zu entfernen, weil CURRENT_DATE
enthält den Zeitteil nicht, während DATETIME-Datensätze dies tun.
In diesem Beispiel das date
Kriterien vorher angewendet wird Der JOIN wird erstellt. Es ist wie eine abgeleitete Tabelle, die die Informationen herunterfiltert, bevor der JOIN erstellt wird – was zu anderen Ergebnissen führt, als wenn die Kriterien in der WHERE-Klausel angegeben wären.
Um die Liste der Produkte und Preise für morgen zu erhalten, verwenden Sie:
SELECT pd.id,
pd.name,
pr.price
FROM PRODUCTS pd
LEFT JOIN PRICES pr ON pr.id = pd.id
AND DATE(pr.date) = DATE_ADD(CURRENT_DATE, INTERVAL 1 DAY)
Referenz:
Wenn Sie sowohl die heutigen als auch die morgigen Preise in einer einzigen Abfrage wünschen, verwenden Sie:
SELECT pd.id,
pd.name,
pr1.price AS price_today,
pr2.price AS price_tomorrow
FROM PRODUCTS pd
LEFT JOIN PRICES pr1 ON pr1.id = pd.id
AND DATE(pr1.date) = CURRENT_DATE
LEFT JOIN PRICES pr2 ON pr2.id = pd.id
AND DATE(pr2.date) = DATE_ADD(CURRENT_DATE, INTERVAL 1 DAY)