ITPub博客

首页 > 应用开发 > IT综合 > self join

self join

原创 IT综合 作者:moonsoft 时间:2018-12-29 17:33:04 0 删除 编辑

注:我原先写树形的组织结构的时候可以用这个的 :见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博客 ” ,链接:https://blog.itpub.net/226700/viewspace-911451/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: to_char
请登录后发表评论 登录
全部评论

注册时间:2005-01-20

  • 博文量
    412
  • 访问量
    418767