select * from t_employee;
有如下记录:
select * from t_emp_role;
有如下记录:
select * from t_role;
有如下记录:
左连接语句如下:
select a.EmpNo as 工号,a.EmpName as 姓名,a.EmpPassword as 密码,ifnull(b.rolename,'a') as 角色
from t_employee a left join
(select a.EmpNo, a.EmpName, a.RoleCode, b.RoleName
from t_emp_role a, t_role b
where a.RoleCode = b.RoleCode) b
on b.EmpNo = a.EmpNo;
查询结果如下:
圈红的地方应该显示项目负责人,不知什么原因,但也没有显示字母a,请朋友们看看,非常感谢
在外面再嵌套一层试试,
ifnull(b.rolename,'a') as 角色 这时候的b还是你的子查询结果,不是最终连接后的结果。
select c.工号,c.姓名,c.密码,ifnull(c.rolename,'a') as 角色 from (
select a.EmpNo as 工号,a.EmpName as 姓名,a.EmpPassword as 密码,b.rolename
from t_employee a left join
(select a.EmpNo, a.EmpName, a.RoleCode, b.RoleName
from t_emp_role a, t_role b
where a.RoleCode = b.RoleCode) b
on b.EmpNo = a.EmpNo
) c
select a.EmpNo as 工号,a.EmpName as 姓名,a.EmpPassword as 密码,ifnull(b.rolename,'a') as 角色
from t_employee a left join
(select a.EmpNo, a.EmpName, a.RoleCode, b.RoleName
from t_emp_role a, t_role b
where a.RoleCode = b.RoleCode) b
on b.EmpNo = a.EmpNo
where a.EmpNo like '11%'; --加上该行限制条件也能正确,
将子查询(select a.EmpNo, a.EmpName, a.RoleCode, b.RoleName
from t_emp_role a, t_role b
where a.RoleCode = b.RoleCode) 创建到临时表中然后再左连接也能正确显示,不知为何