2 qq 40076006 qq_40076006 于 2017.09.11 10:02 提问

算岀每个人的应岀勤,实岀勤天数是不是用sum与left join

A表
姓名 职位 应出勤天数
张三 班长 30
李四 组长 30
张三 员工 30

B表

姓名 职位 实出勤天数
张三 班长 29
李四 组长 30
张三 员工 25

根据姓名,职位查询每个人的实出与应出勤天数
姓名 职位 应出勤天数 实出勤天数
张三 班长 30 29
张三 员工 30 25
李四 组长 30 30

这样的效果用SQL语句怎么写?操作思路,是不是先SUM合每个人的实出勤天数,然后再用left join?

6个回答

m0_38091006
m0_38091006   2017.09.11 10:10

B表先sum(实际出勤天数),A表ID group by a表id

在left jion (select sum,a_id from b group a_id) b on a.id = b.a_id

qq_35728177
qq_35728177   Ds   Rxr 2017.09.11 10:11

如果你的表是真实的,那么实际出勤天数不应该可以直接拿到吗? select a.name,a.day,b.day from A a inner join B b where a.name=b.name
如果不是的话 就要加一个sum求实际出勤了,另外你的表设计的还不够完美,最好是优化一下

qq_40076006
qq_40076006 谢谢
2 个月之前 回复
u014786004
u014786004   2017.09.11 10:14

select A.name,A.position,A.participation,B.participationfrom A,B where A.user_id=B.user_id

u014786004
u014786004 select A.name,A.position,A.participation,B.participation from A,B where A.user_id=B.user_id 少了一个空格
2 个月之前 回复
qq_34664963
qq_34664963   2017.09.11 10:18

这两张表完全可以设计成一张表 ,不明白你这样分出两张表的目的是什么?
就你这个问题的话 我觉得可以这样查
select a.*,(select b.实出勤天数 from B b where b.name = a.name) from A a

zhwyj1019
zhwyj1019   2017.09.11 10:59

SELECT A.姓名,_A.职位,_A.应出勤天数,_A.实出勤天数 FROM A _A, B _B WHERE _A.AID = _B.BID;

zhwyj1019
zhwyj1019 隐式内连接:SELECT _A.姓名,_A.职位,_A.应出勤天数,_A.实出勤天数 FROM A _A, B _B WHERE _A.AID = _B.BID;
2 个月之前 回复
qq_40076006
qq_40076006   2017.09.11 11:03

感谢各位,图片说明图片说明

Csdn user default icon
上传中...
上传图片
插入图片