如何在mysql中使用sql join

2024-03-16

表名: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(使用前将#替换为@)

如何在mysql中使用sql join 的相关文章

随机推荐