日期:2014-05-17 浏览次数:20804 次
select * from a where a.id in (select part_id from B where part_id='[指定部门id]') or a.id ='[指定部门id]';
------解决方案--------------------
你的意思是不是只要有人的部门
SELECT c.ID,c.NAME
FROM (SELECT a.ID,a.NAME,COUNT(b.ID) num
FROM a,b
WHERE a.ID=b.part_id(+)
AND a.ID=指定部门ID
GROUP BY a.NAME,a.ID ) c
WHERE c.num > 0
------解决方案--------------------
A:部门表 name,id
没有指定部门之间的层级,这你样的定义,没办法知道哪些是其下属部门。
最起码要定义
A:部门表 name,id ,upid
指明层级关系,再用Connect By找出下级部门
select
*
from a
connect by prior id=upid
--start with upid is null--顶级为空
start with upid=xxx
来找该部门的下级部门
------解决方案--------------------
参照一下:
http://topic.csdn.net/u/20080329/11/217b018f-bffc-413f-ba03-df07249a612c.html
------解决方案--------------------
用 ROW_NUMBER() OVER (PARTITION BY COL1 ORDER BY COL2)