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
Powyższe dostanie wszystkich użytkowników z wierszem w harmonogramie. Dlatego użytkownicy z liczbą 0 nie pojawią się.
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
To zapytanie wybierze imię i nazwisko użytkownika oraz policzy, ile razy identyfikator użytkownika pojawi się w tabeli harmonogramu.
Robi to poprzez grupowanie według identyfikatora użytkownika.
A dodatkowo używa lewego sprzężenia na podstawie identyfikatora użytkownika i daty. Ważne jest, aby umieścić tutaj warunek daty, aby wszyscy użytkownicy zostali wybrani. Dzieje się tak, ponieważ lewe sprzężenie obejmie również wszystkich użytkowników, którzy również nie pasują. Ale jeśli umieścisz to w klauzuli where, wszyscy użytkownicy nie zostaną wybrani. Innymi słowy, nie otrzymasz zera dla 'gerry chandan', jeśli umieścisz warunek daty w klauzuli WHERE. Zamiast tego zostałby pominięty w wynikach.