Приемаме 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 е направено. Това е като извлечена таблица, филтрираща информацията, преди да се направи 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)