您的位置:首页 > 数据库

SQLZOO - SELF JOIN 第十题

2020-02-03 03:15 239 查看

题目:
*Find the routes involving two buses that can go from Craiglockhart to Lochend.
Show the bus no. and company for the first bus, the name of the stop for the transfer,
and the bus no. and company for the second bus.

第十题真的很复杂。先开始想着建立一个视图,逻辑更清晰一些,但是不允许。只能写成一条,如下:

SELECT DISTINCT v1.num,v1.company, name,v2.num,v2.company
// 找出经过Craiglockhart的车辆和其途径的其它站点集合v1(num,company,stop)
FROM
(SELECT r1.num ,r1.company ,r2.stop
FROM route AS r1 JOIN route AS r2 ON (r1.num=r2.num
AND r1.company=r2.company)JOIN stops ON r1.stop=stops.id
WHERE stops.name='Craiglockhart'  AND r2.stop!= r1.stop) AS v1

JOIN
// 找出经过Lochend的车辆和其途径的其它站点集合v2(num,company,stop)
(SELECT r1.num,r1.company,r2.stop
FROM route AS r1 JOIN route AS r2 ON (r1.num=r2.num AND
r1.company=r2.company)JOIN stops ON r1.stop=stops.id
WHERE stops.name='Lochend'  AND r2.stop!= r1.stop) AS v2

// v1和v2需要经过同一个站点作为周转站点
ON v1.stop=v2.stop

JOIN stops ON v1.stop=stops.id
  • 点赞
  • 收藏
  • 分享
  • 文章举报
touteng_code 发布了4 篇原创文章 · 获赞 0 · 访问量 97 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: