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
Ce qui précède vous permettra d'obtenir tous les utilisateurs avec une ligne dans le programme. Ainsi, les utilisateurs avec un compte de 0 ne s'afficheront pas.
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
Cette requête sélectionnera le prénom et le nom de famille de l'utilisateur et comptera le nombre de fois que l'ID utilisateur apparaît dans le tableau de planification.
Il le fait en regroupant par identifiant d'utilisateur.
Et en plus, il utilise une jointure gauche basée sur l'identifiant de l'utilisateur et la date. Il est important de mettre ici la condition de date afin que tous les utilisateurs soient sélectionnés. En effet, la jointure gauche inclura également tous les utilisateurs qui ne correspondent pas. Mais si vous mettez ceci dans la clause where, tous les utilisateurs ne seront pas sélectionnés. En d'autres termes, vous n'obtiendrez pas un compte de zéro pour 'gerry chandan' si vous mettez la condition de date dans la clause where. Au lieu de cela, il serait exclu des résultats.