Forudsat PRICES.date
er en DATETIME-datatype, brug:
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
Jeg brugte DATE-funktionen for at fjerne tidsdelen, fordi CURRENT_DATE
vil ikke inkludere tidsdelen, mens DATETIME-registreringer vil.
I dette eksempel er date
kriterier anvendes før JOIN er lavet. Det er som en afledt tabel, der filtrerer oplysningerne ned, før JOIN'et laves - hvilket vil give andre resultater, end hvis kriterierne var specificeret i WHERE-sætningen.
For at få listen over produkter og priser for i morgen, brug:
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:
Hvis du ønsker både dagens og morgendagens priser i en enkelt forespørgsel, skal du bruge:
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)