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
Ovanstående kommer att få dig alla användare med en rad i schemat det. Så användare med ett antal 0 kommer inte att dyka upp.
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
Den här frågan kommer att välja användarens förnamn och efternamn och räkna antalet gånger som användar-ID visas i schematabellen.
Den gör detta genom att gruppera efter användar-ID.
Och dessutom använder den en vänsterkoppling baserat på användar-id och datum. Det är viktigt att sätta datumvillkoret här så att alla användare är valda. Detta beror på att den vänstra anslutningen kommer att inkludera alla användare som inte matchade också. Men om du sätter detta på where-klausulen kommer inte alla användare att väljas. Med andra ord, du kommer inte att få noll för 'gerry chandan' om du sätter datumvillkoret i where-satsen. Istället skulle han lämnas utanför resultaten.