Supponendo PRICES.date
è un tipo di dati DATETIME, utilizzare:
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
Ho usato la funzione DATA per rimuovere la parte temporale, perché CURRENT_DATE
non includerà la parte temporale mentre i record DATETIME lo faranno.
In questo esempio, la date
criteri vengono applicati prima il JIN è fatto. È come una tabella derivata, che filtra le informazioni prima che venga creato il JOIN, che produrrà risultati diversi rispetto a quelli se i criteri fossero specificati nella clausola WHERE.
Per ottenere l'elenco dei prodotti e dei prezzi di domani, utilizza:
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)
Riferimento:
Se desideri i prezzi di oggi e di domani in un'unica query, utilizza:
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)