专注Oracle EBS--理性的浪漫
===========================================================
===========================================================

注:我原先写树形的组织结构的时候可以用这个的 :见CSDN博客:program.diary

一张表可以自我连接.进行自连接时我们需要一个机制来区别一个表的两个实例. 在FROM clause(子句)中我们可以给这个表不同的别名 - 然后在语句中其它需要使用到该别名的地方用dot(点)来连接该别名和字段名.


用公交线路表来演示self joins(自连接)

Self join of route on (num, company)

我们可以把route(公交线路表)用字段对 (num, company) 来进行自连接. 结果是什么意思呢?你可以知道每条公交线路的任意两个可联通的车站.

SELECT * FROM route R1, route R2

  WHERE R1.num=R2.num AND R1.company=R2.company

查询结果超过11000条记录.下面显示了部分记录.  其中有121 条关于LRT 1的线路,该线路有11个车站,所有11*11=121条记录.  这是一条环线,第一站和最后一站相同.

numcompanyposstopnum_1company_1pos_1stop_1
1LRT11341LRT7217
1LRT11341LRT11134
1LRT11341LRT1079
...
1LRT2971LRT7217
1LRT2971LRT11134
...
2LRT9312LRT11217
2LRT9312LRT1168
...

Self join of route on stop

我们还可以用stop字段来对route(公交线路表)进行自连接. 查询的结果就是共用同一车站的公交线组合.

SELECT * FROM route R1, route R2

  WHERE R1.stop=R2.stop;

下表就是共享53号'Craiglockhart'车站的一些公交线路.

numcompanyposstopnum_1company_1pos_1stop_1
47LRT45347LRT453
47LRT45327LRT653
47LRT45310LRT853
47LRT45345LRT753
47LRT4534LRT653
10LRT85347LRT453
10LRT85327LRT653
10LRT85310LRT853
...
moonsoft 发表于:2007.04.18 17:54 ::分类: ( Oracle基础/数据仓库/BI , ORACLE DBA ) ::阅读:(413次) :: 评论 (0) ::收藏此页到365Key

发表评论
标题

在此添加评论
表情符号: smile laughing tongue angry crying sad wassat wink

称呼

邮箱地址(可选)

个人主页(可选)

 authimage


Blog信息
博客日历
切换风格
文章归档...
最新发表...
最新评论...
最多阅读文章...
博客统计...
网站链接...
新闻聚合