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
Met het bovenstaande krijg je alle gebruikers met een rij in het schema. Dus de gebruikers met een telling van 0 komen niet opdagen.
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
Deze zoekopdracht selecteert de voornaam en achternaam van de gebruiker en telt het aantal keren dat de gebruikers-ID in de planningstabel wordt weergegeven.
Het doet dit door te groeperen op gebruikers-ID.
En bovendien gebruikt het een left join op basis van gebruikers-ID en datum. Het is belangrijk om hier de datumvoorwaarde in te voeren, zodat alle gebruikers zijn geselecteerd. Dit komt omdat de linker join ook alle gebruikers zal bevatten die niet overeenkomen. Maar als u dit op de waar-clausule plaatst, worden niet alle gebruikers geselecteerd. Met andere woorden, u krijgt geen nultelling voor 'gerry chandan' als u de datumvoorwaarde in de waar-clausule plaatst. In plaats daarvan zou hij de resultaten niet zien.