Mysql
 sql >> Database >  >> RDS >> Mysql

Tutorial di auto join n. 10 su sqlzoo

La mia soluzione a questo problema:ho diviso il problema in due.

Ora entrambe le tabelle S ed E avranno percorsi comuni e ottengo tutti questi percorsi comuni unendo le sottoquery, utilizzando gli ID di ciascuna tabella. Poiché ci sono percorsi duplicati (uguale:S.num, S.company, stop.name, E.num, E.company) ho usato 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)