Assumindo
PRICES.date
é um tipo de dados DATETIME, use: 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
Usei a função DATA para remover a parte do tempo, porque
CURRENT_DATE
não incluirá a parte do tempo, enquanto os registros DATETIME incluirão. Neste exemplo, a
date
os critérios estão sendo aplicados antes o JOIN é feito. É como uma tabela derivada, filtrando as informações antes que o JOIN seja feito - o que produzirá resultados diferentes do que se os critérios fossem especificados na cláusula WHERE. Para obter a lista de produtos e preços para amanhã, use:
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)
Referência:
Se você quiser os preços de hoje e de amanhã em uma única consulta, use:
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)