自我連接指單一資料表與自己 JOIN,需使用資料表別名區分兩個實例。語法:
FROM table AS A, table AS B
WHERE A.col = B.col ...
id, namenum(路線號), company(營運商), pos(站序), stop(站點ID)SELECT * FROM route R1, route R2
WHERE R1.num = R2.num
AND R1.company = R2.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';
邏輯:找出同時經過 Craiglockhart 與 Tollcross 的路線(同路線不同站序),即為直達路線。若無直達,可進一步以共站為中介查詢換乘方案。
route(num, company)、route(stop))與必要篩選條件。