select tu.mr_fname, tu.mr_lname, count(ts.mr_id) as `count`
from tbl_user tu
inner join tbl_schedule ts on ts.mr_id = tu.mr_id and
ts.sch_date between '2012-01-01' and '2012-08-01'
group by tu.mr_id
Di atas Anda akan mendapatkan semua pengguna dengan baris dalam jadwal itu. Jadi pengguna dengan hitungan 0 tidak akan muncul.
select tu.mr_fname, tu.mr_lname, count(ts.mr_id) as `count`
from tbl_user tu
left join tbl_schedule ts on ts.mr_id = tu.mr_id and
ts.sch_date between '2012-01-01' and '2012-08-01'
group by tu.mr_id
Kueri ini akan memilih nama depan dan nama belakang pengguna dan menghitung berapa kali ID pengguna muncul di tabel jadwal.
Ini dilakukan dengan mengelompokkan berdasarkan id pengguna.
Dan selain itu menggunakan gabungan kiri berdasarkan id dan tanggal pengguna. Penting untuk menempatkan kondisi tanggal di sini sehingga semua pengguna dipilih. Ini karena gabungan kiri akan mencakup semua pengguna yang tidak cocok juga. Tetapi jika Anda meletakkan ini di klausa where, semua pengguna tidak akan dipilih. Dengan kata lain, Anda tidak akan mendapatkan hitungan nol untuk 'gerry chandan' jika Anda memasukkan kondisi tanggal di klausa where. Sebaliknya, dia tidak akan mendapatkan hasil.