Assuming PRICES.date is a DATETIME data type, 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
I used the DATE function to remove the temporary part, because CURRENT_DATE will not include the temporary part, while the DATETIME records will be.
In this example, date criteria are applied before the JOIN is created. It looks like a view, filtering out the information before the JOIN is created - which will lead to different results than if the criteria were specified in the WHERE clause.
For a list of products and prices for tomorrow, 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)
Link:
If you want both today's and tomorrow's prices in one request, 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)
OMG Ponies
source share