首页 新闻 会员 周边 捐助

关于三个(以上)表的联接,from子句产生的临时表到底是什么情况

0
悬赏园豆:10 [待解决问题]

比如:

from T1 inner join T2 inner join T3

T1 left join T2

T1 inner join T3

T1有m1列,n1行

T2有m2列,n2行

T3有m3列,n3行

不考虑on condition

①会生成几张临时表?

②生成的临时表有多少列,多少行?

请大家解答,这个问题我看的书上都没有给出回答,所以难以理解。

问题补充:

下面给出一个具体的例题:

查询"01"课程比"02"课程成绩高的学生的信息及课程分数:

 

 

select a.*,b.score as '01课程分数',c.score as '02课程分数'

from student as a

left join SC as b on a.S#=b.S# and b.C#='01'

left join SC as c on c.S#=a.S# and c.C#='02'

where b.score>c.score;

这个查询的具体执行过程我一直无法理解,

就是纠结在多个联接这里

青年的昆特斯的主页 青年的昆特斯 | 初学一级 | 园豆:187
提问于:2015-05-15 20:01
< >
分享
所有回答(4)
0

最简单的方法就是找到几个表的相同点,也就是几个表能建立连接的关系,你这问题就迎刃而解了

superGao | 园豆:202 (菜鸟二级) | 2015-05-16 15:36
0

到底有多少临时表,表示同样不清楚,同关注。但如果你只想学习查询的执行过程,你可以在SQL SERVER 管理工具上,执行SQL时选择 包含执行计划,那里会显示详细的步骤

Mike.Jiang | 园豆:127 (初学一级) | 2015-06-18 09:33
0

建议LZ看一下《Microsoft SQL SERVER 2008技术内幕 T-SQL查询》第一章,有详细介绍哈。

FishParadise | 园豆:206 (菜鸟二级) | 2015-06-19 09:04
0

应该只产生一张临时表吧,这个还真没关注过,返回结果列是m1+m2+m3,from T1 inner join T2 inner join T3返回行是t1,t2,t3有符合三者关联条件的所有行,T1 left join T2返回行是t1的行,T1 inner join T3返回行是符合t1,t2关联条件的所有行,示例中三张表先关联然后再筛选出符合b.score>c.score的数据行

惊梦无痕 | 园豆:206 (菜鸟二级) | 2015-09-14 10:04
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册