Dengan asumsi PRICES.date
adalah tipe data DATETIME, gunakan:
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
Saya menggunakan fungsi TANGGAL untuk menghapus bagian waktu, karena CURRENT_DATE
tidak akan menyertakan bagian waktu sedangkan catatan DATETIME akan.
Dalam contoh ini, date
kriteria sedang diterapkan sebelum JOIN dibuat. Ini seperti tabel turunan, menyaring informasi sebelum JOIN dibuat -- yang akan menghasilkan hasil yang berbeda dibandingkan jika kriteria ditentukan dalam klausa WHERE.
Untuk mendapatkan daftar produk dan harga untuk besok, gunakan:
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)
Referensi:
Jika Anda ingin harga hari ini dan besok dalam satu kueri, gunakan:
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)