繁体   English   中英

需要有关SQL自联接逻辑(通过SQLZoo)的帮助?

[英]Need some assistance with SQL Self-join logic ( via SQLZoo )?

我正在研究自我联接,并在这个问题上:

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='Craiglockhart'
    AND  stopb.name='London Road'

在本网站上排名第六

我不明白为什么要使用该子句:

  (a.company=b.company AND a.num=b.num)

如果我们要检查两个不同的站点-'Craiglockhart'和'London Road',那么为什么要使用a.company = b.company AND a.num = b.num

IE为什么不简单:

a.stop = b.stop

注意:当我问这个问题时,答案就来了。 所以我决定完成并发布答案,以供参考

原因是因为当我们进行SELF-JOIN ,我们需要仔细查看要连接的表的结构。

在此示例中, numcompany列将保持不变,但是stop列会更改。

也就是说,如果我们加入了使用兴田条款r1.stop = r2.stop ,那将没有任何意义,因为我们被困在一个

为什么不使用自连接我们不知道。自连接主要用于父子关系表。 对于Case,您很容易获得

    SELECT a.company, a.num, stopa.name
    FROM route a 
    JOIN stops stopa ON (a.stop=stopa.id) 
    WHERE stopa.name='Craiglockhart'
          OR  stopa.name='London Road'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM