[英]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
,我们需要仔细查看要连接的表的结构。
在此示例中, num
和company
列将保持不变,但是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.