SELECT a.员工,b.部门名称,c.职位名称 FROM 员工表 a LEFT JOIN 部门表 b ON a.部门编号=b.部门编号 LEFT JOIN 职位表 c ON a.职位编号=c.职位编号
Employees:员工表 Department:部门表 Post:职位表select e.Employee as '员工',d.DepartmentName as '部门名称',p.PostName as '职位名称' from Department as d join Employees as e on e.DepartmentNo=d.DepartmentNo join Post as p on e.PostNo=p.PostNo
declare @a table (员工 int,部门编号 varchar(10),职位编号 varchar(10)) insert into @a select 1,'m','n' declare @b table (部门编号 varchar(10),部门名称 varchar(10)) insert into @b select 'm','采购' declare @c table (职位编号 varchar(10),职位名称 varchar(10)) insert into @c select 'n','科长' select a.员工,b.部门名称,c.职位名称 from @a a join @b b on a.部门编号=b.部门编号 join @c c on a.职位编号=c.职位编号1 采购 科长
你想如何处理null?不想出现null值就用inner join。 要想把所有员工都列出来,就用两个 left join,另2个表没有对应数值就是null了。
FROM 员工表 a LEFT JOIN 部门表 b ON a.部门编号=b.部门编号
LEFT JOIN 职位表 c ON a.职位编号=c.职位编号
Department:部门表
Post:职位表select e.Employee as '员工',d.DepartmentName as '部门名称',p.PostName as '职位名称'
from Department as d
join Employees as e
on e.DepartmentNo=d.DepartmentNo
join Post as p
on e.PostNo=p.PostNo
declare @a table (员工 int,部门编号 varchar(10),职位编号 varchar(10))
insert into @a select 1,'m','n'
declare @b table (部门编号 varchar(10),部门名称 varchar(10))
insert into @b select 'm','采购'
declare @c table (职位编号 varchar(10),职位名称 varchar(10))
insert into @c select 'n','科长'
select a.员工,b.部门名称,c.职位名称 from @a a join @b b on a.部门编号=b.部门编号
join @c c on a.职位编号=c.职位编号1 采购 科长
要想把所有员工都列出来,就用两个 left join,另2个表没有对应数值就是null了。