Предполагая, что PRICES.date
является типом данных DATETIME, используйте:
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
Я использовал функцию DATE , чтобы удалить часть времени, потому что CURRENT_DATE
не будет включать часть времени, в то время как записи DATETIME будут.
В этом примере date
критерии применяются до соединения. Это как производная таблица, отфильтровывающая информацию перед созданием JOIN - которая даст результаты, отличные от тех, которые были указаны в предложении WHERE.
Чтобы получить список продуктов и цен на завтра, используйте:
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)
Справка:
Если вы хотите, чтобы цены за сегодня и завтра в одном запросе, используйте:
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)