self join

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

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

[@more@]

用公交线路表来演示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
...

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/226700/viewspace-911451/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/226700/viewspace-911451/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值