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
Ovenstående vil få dig alle brugere med en række i tidsplanen det. Så brugere med et antal 0 vil ikke dukke op.
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
Denne forespørgsel vil vælge fornavn og efternavn på brugeren og tælle antallet af gange, som bruger-id vises i tidsplantabellen.
Det gør den ved at gruppere efter bruger-id.
Og derudover bruger den en venstre join baseret på bruger-id og dato. Det er vigtigt at sætte datobetingelsen her, så alle brugere er udvalgt. Dette skyldes, at den venstre joinforbindelse også vil inkludere alle brugere, der ikke matchede. Men hvis du sætter dette på where-klausulen, vil alle brugere ikke blive valgt. Med andre ord vil du ikke få et tal på nul for 'gerry chandan', hvis du sætter datobetingelsen i where-sætningen. I stedet ville han blive udeladt af resultaterne.