Za předpokladu PRICES.date
je datový typ DATETIME, použijte:
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
Použil jsem funkci DATE odstranit časovou část, protože CURRENT_DATE
nebude zahrnovat časovou část, zatímco záznamy DATETIME ano.
V tomto příkladu date
kritéria jsou aplikována před je provedeno JOIN. Je to jako odvozená tabulka, která filtruje informace před provedením JOIN – což povede k jiným výsledkům, než kdyby byla kritéria specifikována v klauzuli WHERE.
Chcete-li získat seznam produktů a cen na zítra, použijte:
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)
Reference:
Pokud chcete v jednom dotazu jak dnešní, tak i zítřejší ceny, použijte:
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)