有部门表,人员表,在部门下有人跟部门同时属于同一部门的关系,问能否查找到部门下有人的部门(过滤掉没人的部门)?
A:部门表 name,id
B:人员表 name,id,part_id
select * from a where a.id in(select part_id from B where part_id='[指定部门id]')
上面的语句只能查询出指定部门ID下面是否有人员,不能查询指定部门ID下面的部门是否有人员
那位大哥知道的?
[解决办法]
上面的语句只能查询出指定部门ID下面是否有人员,不能查询指定部门ID下面的部门是否有人员
这句什么意思啊,是部门下面还有部门,要统计子部门的人数?那你A表应该是个树的结构啊
下面的语句是查指定部门下面有几个人
select a.name,a.id,count(b.id) num
from a,b
where a.id=b.part_id(+)
and a.id=指定部门ID
group by a.name,a.id
[解决办法]
select *from awhere 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)