到目前为止,我们连接的都是两张不同的表,那么能不能对一张表进行自我连接呢?答案是肯定的。有没有必要对一张表进行自我连接呢?答案也是肯定的。
SELECT * FROM route R1, route R2 WHERE R1.num=R2.num AND R1.company=R2.company我们route表用字段(num, company)来进行自连接. 结果是什么意思呢?你可以知道每条公交线路的任意两个可联通的车站。
SELECT * FROM route R1, route R2 WHERE R1.stop=R2.stop;查询的结果就是共用同一车站的所有公交线。这个结果对换乘是不是很有意义呢。
SELECT R1.company, R1.num FROM route R1, route R2, stops S1, stops S2 WHERE R1.num=R2.num AND R1.company=R2.company AND R1.stop=S1.id AND R2.stop=S2.id AND S1.name='Craiglockhart' AND S2.name='Tollcross'