有这一个表:employeeid (员工ID) postionid 职位ID standerid 住宿标准ID departid 部门ID ,其中这三个字 postionid 职位ID standerid 住宿标准ID departid 部门ID 均来自三个表中。其各表中都有其名称。如 职位名称。住宿标准名称,部门名称;
在grid中,实现 员工编号 ,职位名称,住宿标准名称,部门名称,请问该如何写一个好的SQL语句才能实现。
在grid中,实现 员工编号 ,职位名称,住宿标准名称,部门名称,请问该如何写一个好的SQL语句才能实现。
select employeeid
,(select 职位名称 from 职位表 where 职位ID = table.postionid ) as 职位名称
,(select 住宿标准名称 from 住宿标准表 where 住宿标准ID = table.standerid ) as 住宿标准名称
,(select 部门名称 from 部门 where 部门ID = table.departid ) as 部门名称
from 表 as table也可以使用左联接,但是个人感觉如果那三个表只取名称的话,还是用子查询好点。
职位表 a left join 部门表 b on a.employeeid=b.employeeid
left join 职位表 on a.employeeid=c.employeeid left join
住宿表 d on a.employeeid=d.employeeid
如果规模超过10万行的话,建议在员工表上添加职位名称,住宿标准名称,部门名称字段。在插入,删除和修改职位,住宿和部门表的时候,通过存储过程(也可以使用触发器,方便不过性能不如存储过程),同步修改员工表上的相应字段。
4表级联或者子查询的性能损耗太大了。