Прежде всего, вы сделали это: ON a.company = b.company AND a.num = b.num
-> возвращает то же значение для столбца num
- так что это дубликат.
Использовать индексы - например,: a.num
& b.num
:
SELECT a.num
FROM route a JOIN route b
ON a.company = b.company AND a.num = b.num
--OR
SELECT b.num
FROM route a JOIN route b
ON a.company = b.company AND a.num = b.num
ON big.b.stop = small.b.stop
также выдает ошибку
правильный ответ:
SELECT DISTINCT x.num, x.company,x.name,y.num,y.company
FROM (
select a.num as num, a.company as company, stopb.name as name
FROM route a
JOIN route b
ON a.company = b.company AND a.num = b.num
JOIN stops stopa ON (a.stop = stopa.id)
JOIN stops stopb ON (b.stop = stopb.id)
WHERE stopa.name = 'Craiglockhart') x
JOIN
(select a.num as num, a.company as company, stopb.name as name
FROM route a
JOIN route b
ON a.company = b.company AND a.num = b.num
JOIN stops stopa ON (a.stop = stopa.id)
JOIN stops stopb ON (b.stop = stopb.id)
WHERE stopa.name = 'Lochend') y
ON x.name = y.name
ORDER BY x.num