Zakładając PRICES.date
to typ danych DATETIME, użyj:
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
Użyłem funkcji DATA aby usunąć część czasu, ponieważ CURRENT_DATE
nie będzie zawierał części czasu, podczas gdy rekordy DATETIME będą.
W tym przykładzie date
kryteria są stosowane przed DOŁĄCZENIE jest wykonane. Przypomina ona tabelę pochodną, filtrując informacje przed wykonaniem JOIN — co da inne wyniki niż w przypadku, gdy kryteria zostały określone w klauzuli WHERE.
Aby uzyskać listę produktów i cen na jutro, użyj:
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)
Odniesienie:
Jeśli chcesz mieć zarówno dzisiejsze, jak i przyszłe ceny w jednym zapytaniu, użyj:
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)