sql >> Databasteknik >  >> RDS >> Mysql

Självgående handledning #10 på sqlzoo

Min lösning på det här problemet:Jag delade upp problemet i två.

Nu kommer både tabell S och E att ha gemensamma rutter, och jag får alla dessa vanliga rutter genom att gå med i underfrågorna, med hjälp av ID:t för varje tabell. Eftersom det finns dubbletter av rutter (samma:S.num, S.company, stops.name, E.num, E.company) jag använde 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)


  1. Bästa typen av indexering när det finns LIKE-klausul

  2. PHP/MySQL-tidszonsförtydligande

  3. Välja MYSQL-rader med samma fältnamn och lägga till ett prefix

  4. Infogar från MS SQL Server till MySQL-databas