首先是一个企业表 取名 org吧 然后组织有个字段 联系人 Linkman, 组织名orgname , 组织号,orgid ,上级组织号 parentorgid 企业里面至少有三层结构,就是有 总企业,分企业,部门 吧
再有一员工表 取名 emp吧 然后 有字段 empid , orgid
还有一设备表 取名 equ吧 然后 有字段 equid ,orgid
他们之间的关系 不说也是orgid了 但都是直属于某一层组织 不能属于上一层组织现在求一SQL是 select 组织名 联系人 员工人数 设备数 要求,根据条件选择的组织列出该组织及其下属组织的组织信息
比如 如果选择某一分企业,就把该分企业和他的下属部门列出来,并且求该分企业的总人数和总设备数和下属各部门的人数和设备数 ,如果选择 总企业就把该总企业和下属分企业列出来 ,并列出详细信息希望我讲的清楚了,求各位高手帮忙
再有一员工表 取名 emp吧 然后 有字段 empid , orgid
还有一设备表 取名 equ吧 然后 有字段 equid ,orgid
他们之间的关系 不说也是orgid了 但都是直属于某一层组织 不能属于上一层组织现在求一SQL是 select 组织名 联系人 员工人数 设备数 要求,根据条件选择的组织列出该组织及其下属组织的组织信息
比如 如果选择某一分企业,就把该分企业和他的下属部门列出来,并且求该分企业的总人数和总设备数和下属各部门的人数和设备数 ,如果选择 总企业就把该总企业和下属分企业列出来 ,并列出详细信息希望我讲的清楚了,求各位高手帮忙
create table temp1 t as
select o.Linkman,
o.orgid,
o.orgname,
o.parentorgid,
nvl(t1.emp_count),
nvl(t2.equ_count)
from org o,
(select o1.orgid, count(*) as emp_count
from org o1, emp e1
where o1.orgid = e1.orgid) t1,
(select o2.orgid, count(*) as equ_count
from org o2, equ e2
where o2.orgid = e2.orgid) t2
where o.orgid = t1.orgid(+)
and o.orgid = t2.orgid(+)
group by o.Linkman, o.orgid, o.orgname, o.parentorgid;select t1.orgname, t1.Linkman, t1.emp_count, t1.equ_count
from temp1 t1
where t1.orgid = 组织ID
union
select t2.orgname, t2.Linkman, t2.emp_count, t2.equ_count
from temp1 t2
where t2.parentorgid = 组织ID;
企业表org
orgid orgname linkman parentorgid
100 总企业 王 -1
201 分企业1 李 100
202 分企业2 赵 100
203 分企业3 钱 100
2101 部门1 周 201
2102 部门2 吴 201
2201 部门3 郑 202
2202 部门4 孙 202
人员表emp
empid orgid
1 100
2 100
3 201
4 201
5 2101
6 2102
7 202
设备表跟人员表差不多,差不多就这些东西,大家给帮帮忙吧,谢谢啦,不能建临时表,sql是在vs2010,C#中写的