Querry的问题-连接三个表 [英] Problem in querry -joining three tables

查看:111
本文介绍了Querry的问题-连接三个表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

您好,我正在使用Querry查询员工每天工作多少小时.

员工表-employeeid,employeename

时间表-员工编号,总时数,开始日期

请假-请假雇员,请假类型

Hi, I am using querry for checking employees working how much hours in a day.

employee table -employeeid,employeename

timesheet - employeeid,totalhours,startdate

leave - leaveemployeeid,leavetype

SELECT e.employeename,convert(VARCHAR, t.startdate, 103) as startdate,SUM(t.hourstaken) as hourstaken
 FROM employee e 
INNER JOIN 
timesheet t  ON e.employeeid=t.employeeid
 where convert(VARCHAR, t.startdate, 103) = '23/04/2012'
 GROUP BY e.employeeid,e.employeename,convert(VARCHAR, t.startdate, 103) --,leave.leavetype
 HAVING SUM(t.hourstaken) < 9 order by e.employeename



取得成功就可以了.几小时后,如果任何员工花了半天时间,我想再增加一个字段.所以我要在结果中再增加一列,添加名称"leavetype"
并且任何员工都需要半天,所以只需要在Colum中呆半天.



it works fine for getting no. of hours now i want to add one more field if any employee take half day.so i want in result one more column add name ''leavetype''
and any employee take half day so just wirte in colum half day.

推荐答案

where convert(VARCHAR, t.startdate, 103) = ''23/04/2012''



您的查询中有误,TimeSheet没有startDate列,请使用e.startDate进行更正..

试试这个,它工作正常..



is wrong in Your Query, TimeSheet has no startDate column, Corrrect it with e.startDate..

Try This, Its working fine..

SELECT e.employeename,convert(VARCHAR, e.startdate, 103) as startdate,SUM(t.totalhours) as hourstaken,l.leavetype
 FROM employee e
INNER JOIN
timesheet t  ON e.employeeid=t.employeeid
inner join
leave l on l.leaveemployeeid=t.employeeid
 where convert(VARCHAR, e.startdate, 103) = '27/04/2012'
 GROUP BY e.employeeid,e.employeename,convert(VARCHAR, e.startdate, 103),l.leavetype
 HAVING SUM(t.totalhours) < 9 order by e.employeename


尝试一下..

Try this..

SELECT e.employeename,convert(VARCHAR, t.startdate, 103) as startdate,SUM(t.hourstaken) as hourstaken
 FROM employee e
INNER JOIN
timesheet t  ON e.employeeid=t.employeeid
 where convert(VARCHAR, t.startdate, 103) = '23/04/2012'
INNER JOIN 
leave l ON e.employeeid = l.leaveemployeeid
 GROUP BY e.employeeid,e.employeename,convert(VARCHAR, t.startdate, 103), l.leavetype
 HAVING SUM(t.hourstaken) < 9 order by e.employeename




HTH!




HTH!


这篇关于Querry的问题-连接三个表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆