问题描述
一共有三张表1请假表tblleave中有字段leaveidemployeeidapproverid2员工表tblemployee中有字段employeeidloginnamedeptid3部门表departmentid和name如何显示员工名审批者名部门名
解决方案
解决方案二:
用视图
解决方案三:
selectname,loginname,员工名fromtblleaveleftouterjointblemployeeontblleave.employeeid=tblemployee.employeeidleftouterjoin部门表ontblemployee.deptid=部门表.departmentid
解决方案四:
select员工表_A.员工名as请假人,请假表_A.审批者ID,员工表_B.员工名as审批人,部门表.部门名from员工表as员工表_A,员工表as员工表_B,请假表,部门表where员工表_A.部门ID=部门表.部门IDand审批表.审批人ID=员工表_B.员工IDand请假表.雇员id=员工表_A.员工ID没按照你的字段写重点就是对员工表其别名(实际上就有2个员工表了)
解决方案五:
selectloginname,name,approveridfromtblleave,tblemployee,departmentwheretblleave.employeeid=tblemployee.employeeidandtblemployee.deptid=department.departmentid
解决方案六:
引用3楼yulitian的回复:
select员工表_A.员工名as请假人,请假表_A.审批者ID,员工表_B.员工名as审批人,部门表.部门名from员工表as员工表_A,员工表as员工表_B,请假表,部门表where员工表_A.部门ID=部门表.部门IDand审批表.审批人ID=员工表_B.员工IDand请假表.雇员id=员工表_A.员工ID没按照你的字段写重点就是对员工表其别名(实际上就有2个员工表了)
正解
解决方案七:
审批者可以是空值,但是用上面的方法解出来没有空值的那种情况,用外连接,有很多重复的记录,但是不知道哪里错了。而且很麻烦
解决方案八:
那就改用jion写以上代码2个内连接不变"审批表.审批人ID=员工表_B.员工ID"那个,改成左联接即可
解决方案九:
大意如下SELECT员工_2.姓名AS请假人,员工_1.姓名AS审批人,部门.部门名称FROM部门INNERJOIN员工AS员工_2ON部门.部门ID=员工_2.部门IDINNERJOIN请假ON员工_2.员工ID=请假.请假人RIGHTOUTERJOIN员工AS员工_1ON请假.批准人=员工_1.员工ID