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関数を使用しましたa> 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)
参照:
1つのクエリで今日と明日の両方の価格が必要な場合は、次を使用します。
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)