Giải pháp của tôi cho vấn đề này:Tôi chia vấn đề thành hai.
Bây giờ cả bảng S và E sẽ có các tuyến đường chung và tôi nhận được tất cả các tuyến đường chung này bằng cách tham gia các truy vấn con, sử dụng id của mỗi bảng. E.num, E.company) tôi đã sử dụng DISTINCT.
SELECT DISTINCT S.num, S.company, stops.name, E.num, E.company
FROM
(SELECT a.company, a.num, b.stop
FROM route a JOIN route b ON (a.company=b.company AND a.num=b.num)
WHERE a.stop=(SELECT id FROM stops WHERE name= 'Craiglockhart')
)S
JOIN
(SELECT a.company, a.num, b.stop
FROM route a JOIN route b ON (a.company=b.company AND a.num=b.num)
WHERE a.stop=(SELECT id FROM stops WHERE name= 'Sighthill')
)E
ON (S.stop = E.stop)
JOIN stops ON(stops.id = S.stop)