首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL动物园教程#10自连接

SQL动物园教程#10自连接
EN

Stack Overflow用户
提问于 2015-12-29 02:43:25
回答 2查看 768关注 0票数 0

我是sql的初学者,尝试通过使用self两次来遵循这个提示,但是失败了。

找到两辆可以从Craiglockhart到Sighthill的巴士路线。请出示公共汽车号码。公司为第一班车,名称为换乘站,巴士号为。第二班公共汽车的伴郎。提示:自我连接两次,找到访问Craiglockhart和Sighthill的公共汽车,然后加入匹配的车站。

我的代码:

代码语言:javascript
复制
select 
    a.num, a.company, stopsc.name, c.num, c.company 
from 
    route a 
    join route b 
    on (a.num=b.num and a.company=b.company) **From Craiglockhart to the transfer stop**
    join route c 
    on (b.stop=c.stop) **to connect the transfer stop**
    join route d 
    on (c.num=d.num and c.company=d.company) **From transfer stop to the final stop which is Sighthill**
    join stops stopsa 
    on (a.stop=stopsa.id)
    join stops stopsb 
    on (b.stop=stopsb.id)
    join stops stopsc 
    on (c.stop=stopsc.id)
    join stops stopsd 
    on (d.stop=stopsd.id)
where 
    stopsa.name='Craiglockhart' 
and stopsd.name='Sighthill' 
and a.num!=c.num **to delete the same route**
order by a.num

请告诉我,我回答的逻辑错误是什么?我知道在sqlselfjoin上还有另一个答案,但我想知道我走错了哪一步。非常感谢!

EN

回答 2

Stack Overflow用户

发布于 2015-12-29 03:02:45

从我头上..。如果这是逐字SQL语句,则需要删除**注释**'s。

票数 0
EN

Stack Overflow用户

发布于 2017-02-18 16:31:28

代码语言:javascript
复制
and a.num!=c.num

使用这段代码,我假设您正在尝试删除任何可能的1总线旅行。这一行代码有两个主要问题。

1)你正在阻止一家可能不同的公司加入同一个bus#。(尽管在这个问题中,这个逻辑错误没有任何区别)

2)虽然您确实删除了任何可能的1总线行程(不转移总线),但您不会删除重复的。(顺便提一句,你不可能乘坐1路巴士到目的地:D )

出现重复的原因是有些总线线路有重复的行。例如,如果您执行下面的代码,您将看到重复的。(就某条巴士线而言,同一站有多于1个入口)

代码语言:javascript
复制
  SELECT a.company, a.num, stopa.name, stopb.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='London Road' AND a.num=35

因此,要删除重复项,应该在代码的顶部编写。

代码语言:javascript
复制
select distinct
a.num, a.company, stopsc.name, c.num, c.company 

最后,网站上有一个排序错误,其中num没有被正确地处理为整数,从而给出了错误的答案。因此,将此代码放入,您将得到“正确的答案”。

代码语言:javascript
复制
order by CAST(a.num as int)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34503677

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档