表名:tbl_schedule
tr_id(P.K.) mr_id(F.K.) sch_date doctor_id
----------- ----------- -------- ----------
1 23 01/01/2012 32
2 23 05/01/2012 13
3 22 08/01/2012 14
表名:tbl_user
mr_id(P.K.) mr_fname mr_lname
----------- ----------- --------
23 Manish malviya
24 chandan gerry
22 jacky chen
请回复询问谢谢
我想获得两个日期之间的先生号码mr_fname, mr_lname group by mr_id
它应该看起来像。在此计数来自 tbl_schedule 表,并且 mr_fnmae 和 mr_lname 是从 tbl_user 并参考 mr_id 获取的。
还有一件事我不想要 0 计数
mr_fname mr_lname count
----------- -------- -------
Manish malviya 2
jacky chen 1
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
上面的内容将为您提供计划中具有一行的所有用户。所以计数为0的用户不会出现。
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
此查询将选择用户的名字和姓氏,并计算该用户 ID 在计划表中出现的次数。
它通过按用户 ID 分组来实现此目的。
此外,它还使用基于用户 ID 和日期的左连接。在此放置日期条件非常重要,以便选择所有用户。这是因为左连接将包含所有不匹配的用户。但如果将其放在 where 子句中,则不会选择所有用户。换句话说,如果将日期条件放在 where 子句中,则“gerry chandan”的计数不会为零。相反,他将被排除在结果之外。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)