sql上级
⑴ sql获取所有上级节点的Id
两个方法
1、要么用自定义函数(SQL任何版本都支持)
2、要么用WITH语句做子查询(SQL2005和以上版本均支持)
⑵ sql语句查询员工的上级,在同一张表中
如果是SQL2005以上则可以用CTE递归写法
use tempdb
go
create table #emp
(eid integer not null,
ename varchar(10) not null,
epid integer null,
)
insert into #emp
select 1,'A',5
union all
select 2,'me',3
union all
select 3,'bos',4
union all
select 4,'boss',null
select * from #emp
;with empcte as
(select epid,(select ename from #emp b where b.eid = a.epid) as name from #emp a where ename = 'me'
union all
select b.epid,(select ename from #emp where eid = b.epid) as name from empcte a join #emp b on a.epid = b.eid
)
select * from empcte where epid is not null
⑶ sql问题,一个员工可能有一个上级部门,可能有多个上级部门,如何查询查询这个员工所在的顶级部门。
如果是oracle 数据库, 可以使用start with ..connect by 语法。
查出左右部门后在查没有上级部门的部门(使用子查询)
关于语法参考:
http://blog.csdn.net/Bobwu/archive/2008/12/17/3539604.aspx
⑷ sql 一个表中 员工名称、员工号、上级号、 然后要求查询所有员工 和其直接上级,这么干是不是有病
这里假设上级号也就是同一张表里的员工号,而且员工号无重复。
同表连接可用表起别名的办法避免混淆,为了让没有上级的员工也能被查出来,这里使用left join联接。实现SQL语句如下:
select a.员工号,a.员工名称,
b.员工名称 as 上级名称 from
员工表 a left join 员工表 b
on b.员工号=a.上级号;
⑸ 怎么用SQL查询结果的会计科目 显示包括上级科目名称
字段里面添加子查询获取上级科目,再用concat函数拼接自己的会计科目,整个查询sql应该是select id,concat((select name from 表名 where id = left(a.id)limit 1),“\”,a.name) from 表名 a。
⑹ sql 查上级行号的行名
select行名fromHANGHAOwhere行号in(select上级行号fromHANGHAOwhere行号=111)
⑺ 用SQL如何列出所有员工的姓名及其直接上级的姓名
select Table1.ename Table2.ename from emp Table1,emp Table2 where Table1.mgr=Table2 .empno 追问: 嗯是的呢 回答: 上面的不能运行吗?我在Sql Server里面测试过了没问题的。 提问者 的感言: 嗯可以了 你这个意思我大概明白了 也算比较好懂 麻烦你了 2009-08-24其他回答(4) 热心问友 2009-08-24差不多 追问: 可是不能出结果啊 高手帮忙看看 回答: 查询上级表中是否存在员工的名称么 补充: 字段没问题么 追问: 当然有的 可是不知道如何查询简单的就是select mgr,ename from emp可是规定要用子查询来写还是不能太熟练的掌握 麻烦指点指点 回答: 我是说你的员工姓名的字段在 上级表中是否存在或是 关联 主外键关系 ? 追问: 不存在的 回答: 什么不存在的啊 ...附耳细说6级2009-08-24不对select ename (select *** from *** where ****** ) mgr from emp derek9级2009-08-24 select emp.ename,emp1.ename as mgrename
from emp left outer join (select empno from mgr) emp1
on emp.mgr=emp1.empno 补充: 忘了取ename,改成
select emp.ename,emp1.ename as mgrename
from emp left outer join (select empno,ename from mgr) emp1
on emp.mgr=emp1.empno
考虑有的emp可能没有上级
⑻ SQL级联查询,部门表自连接,需要查出某个部门的上级部门及其上上级部门,上级部门无限个,如何查询
用(select…start with…connect by…prior) 具体给你个参考地址:http://www.cnblogs.com/linjiqin/archive/2013/06/24/3152674.html
⑼ 关于sql的上下级查询统计(如图)
selectcode_name,amountfrom
(selectleft(code,2)ascode,ISNULL(SUM(amount),0)asamount
fromagroupbyleft(code,2))astmp
innerjoinbontmp.code=b.code
⑽ sql ,如何通过用户表查出所有上级部门
这个的话,单靠sql好像不能实现,因为ids那个字段保存的方式不太支持
你可以将所有部门放在map里面,然后查询用户信息的时候,关联一下查找出来ids,再根据部门id再查找出来部门名称,这个也简单,直接split ids 然后用map.get就好了