Query menghitung data -7 hari dari hari sekarang di Mysql

mau nanya master soal query nih saya ada query seperti ini

 SELECT DATE (a.CreateDate) tanggal, a.Shift, ROUND(SUM(a.qty)/1000) total, MAX(b.total) subTotal
FROM tbDataTrans_Moll_In a
JOIN (
SELECT DATE (a.CreateDate) tanggal, SUM(a.qty) total
FROM tbDataTrans_Moll_In a
WHERE (a.CreateDate) <= curdate() and date(a.CreateDate) > curdate() -interval 7 day AND NOW() AND a.shift=2
GROUP BY DATE (a.CreateDate)) b ON DATE (a.CreateDate) = b.tanggal
WHERE (a.CreateDate) < DATE(NOW()) AND a.shift=3
GROUP BY DATE (a.CreateDate), a.Shift

apakah query tersebut bener untuk mendapatkan - 7 hari dari sekarang, dan ketika datanya ga tersedia contoh nya pada tanggal 1 - 5 ada dan pada 6 datanya 0, dan 7 ada data, karena tanggal ke 6 maka data ga di tampilkan di query, apakah bisa membuat query menampilkan data kosong tersebut mhon bimbingannya makasih

avatar Ridhoa
@Ridhoa

129 Kontribusi 33 Poin

Diperbarui 5 tahun yang lalu

6 Jawaban:

setahu saya, yap ini akan memunculkan data hari ini -7 hari sampai hari ini. Dan maksud dari menampilkan data kosong seperti apa ya ? disini filter data (selain tanggal) hanya ada shift, jika shift tidak ada di hari itu maka data tidak ditampilkan

avatar lukmanfreedom
@lukmanfreedom

121 Kontribusi 55 Poin

Dipost 5 tahun yang lalu

coba pake left join / LEFT OUTER join

avatar dianarifr
@dianarifr

642 Kontribusi 316 Poin

Dipost 5 tahun yang lalu

nah iya mas @lukmanfreedom kan data di sana emang tidak ada atau nol apakah bisa di tampilkan dalam angka 0 nya ? jadi data yang keluar dari tanggal 1 sampai 7 ?

avatar Ridhoa
@Ridhoa

129 Kontribusi 33 Poin

Dipost 5 tahun yang lalu

contoh nya gmn mas ? @dianarifr

avatar Ridhoa
@Ridhoa

129 Kontribusi 33 Poin

Dipost 5 tahun yang lalu

maksudnya @dianarifr seperti ini

<pre> SELECT DATE (a.CreateDate) tanggal, a.Shift, ROUND(SUM(a.qty)/1000) total, MAX(b.total) subTotal FROM tbDataTrans_Moll_In a LEFT JOIN ( SELECT DATE (a.CreateDate) tanggal, SUM(a.qty) total FROM tbDataTrans_Moll_In a WHERE (a.CreateDate) &lt;= curdate() and date(a.CreateDate) &gt; curdate() -interval 7 day AND NOW() AND a.shift=2 GROUP BY DATE (a.CreateDate)) b ON DATE (a.CreateDate) = b.tanggal WHERE (a.CreateDate) &lt; DATE(NOW()) AND a.shift=3 GROUP BY DATE (a.CreateDate), a.Shift </pre>

boleh dicoba @Ridhoa

avatar lukmanfreedom
@lukmanfreedom

121 Kontribusi 55 Poin

Dipost 5 tahun yang lalu

kalau seperti di atas malah memunculkan semua data pada table mas dari bulan 1 sampai bulan sekarang

avatar Ridhoa
@Ridhoa

129 Kontribusi 33 Poin

Dipost 5 tahun yang lalu

Login untuk ikut Jawaban