您的位置:程序门 -> db2 -> 基础类



多表如何查询成一个有上下级关系的视图.


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


多表如何查询成一个有上下级关系的视图.
发表于:2007-12-13 17:46:41 楼主
我现在有6张表.
province省市表
college学校表,
school机构表,上级关联id为college_id,在这张表中,同时有自己的上下级记录.比如说:学院,院属系,都存在这张表里,院属系是学院的下级.
specialty专业,上级关联id为school_id
base,
sub_school这2个表的上级均为college_id

我如何建立一个视图,为下面的格式:

省市id,学校id,学校name,机构id,机构name,专业id,专业name,base_id,base_name,sub_school_id,sub_school_name,id,name,kind(类型)

也就是说.通过省市,能够查到下面所有的学校,机构等等.
通过学校,能够查到下面所有的机构,专业等等.
发表于:2007-12-13 17:48:131楼 得分:0
请知道的给指导一下吧.真的很着急
发表于:2007-12-14 09:51:242楼 得分:0
用with来做
http://www.ibm.com/developerworks/cn/db2/library/techarticles/0307steinbach/0307steinbach.html
照着上面的db2的with来做就行了。
发表于:2007-12-14 10:28:573楼 得分:0
谢谢大胖.
不好意思,没太看明白.
我用union可以实现这个.
在db2里也可以.
但是放到hsqldb里,用union建了个视图,数据稍大,就速度相当慢.
我想问问除了union,可以用比如join   in等其他的语句来建这个视图吗?
发表于:2007-12-14 14:30:284楼 得分:0
emp表如图:
emp_no     emp_name     manager_no     comm     salary
  01               qq                     --                         0.9           1000
  02               tt                       01                       --               900
  03               ss                       01                       0.5             800
  04               aa                     --                         0.9             750
  05               zz                     04                         0.3             850
  06               pp                     04                       0.3             700

从员工表中查出每个员工的名字   以及其经理的名字   其中   manager_no   表示经理的员工号

select   e.emp_name,m.emp_name  
from   emp   e   ,   emp   m  
where   e.manager_no   =   m.emp_no
发表于:2007-12-14 14:32:345楼 得分:0
我看错了,你不是要递归处理。

union的话,数据量大,肯定会慢,因为需要排序。

你把表结构给贴出来看看。


快速检索

最新资讯
热门点击