A表
姓名 职位 应出勤天数
张三 班长 30
李四 组长 30
张三 员工 30
B表
姓名 职位 实出勤天数
张三 班长 29
李四 组长 30
张三 员工 25
根据姓名,职位查询每个人的实出与应出勤天数
姓名 职位 应出勤天数 实出勤天数
张三 班长 30 29
张三 员工 30 25
李四 组长 30 30
这样的效果用SQL语句怎么写?操作思路,是不是先SUM合每个人的实出勤天数,然后再用left join?
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
如果你的表是真实的,那么实际出勤天数不应该可以直接拿到吗? select a.name,a.day,b.day from A a inner join B b where a.name=b.name
如果不是的话 就要加一个sum求实际出勤了,另外你的表设计的还不够完美,最好是优化一下
select A.name,A.position,A.participation,B.participationfrom A,B where A.user_id=B.user_id
这两张表完全可以设计成一张表 ,不明白你这样分出两张表的目的是什么?
就你这个问题的话 我觉得可以这样查
select a.*,(select b.实出勤天数 from B b where b.name = a.name) from A a
SELECT A.姓名,_A.职位,_A.应出勤天数,_A.实出勤天数 FROM A _A, B _B WHERE _A.AID = _B.BID;