2个左连接的写法问题
让第二个表与第三个左连接构成一个子查询,然后它与第一个表左连接
表定义:temp6(id,age),temp7(age,age2),temp8(age2,name)
temp6是主表,age是整形字段
下面是我上次问得到的答案,但有点麻烦,因为每次都要子查询
select temp6.*,t.* from temp6
left join
(
select temp7.*,temp8.name from temp7 left join temp8 on temp7.age2 = temp8.age2
) T
on temp6.age = T.age
今天我试了一下这么写,结果一样,但不知对不对,敬请指教 :
select * from temp6
left join temp7
left join temp8
on temp7.age=temp8.age2
on temp6.age=temp7.age
------解决方案-------------------- select a1.col , t.col from a1
left join
(
select a2.col , a3.col from a2 left join a3 on a2.id = a3.id
) t
on a1.id = t.id
------解决方案----------------------没有问题,是正确的,不过还是标准的写法更条理一些
select *
from temp6
left join temp7 on temp6.age=temp7.age
left join temp8 on temp7.age=temp8.age2
------解决方案--------------------fxbird(昨天晚上我可能死了) ( ) 信誉:100 Blog 2007-03-26 13:05:14 得分: 0
to coolingpipe:
你这样写不是把temp8左连接到temp6,而不是temp7上了吗?我想左连到7上。
------------
他寫的沒有錯,因為關聯條件是on temp7.age=temp8.age2 ,沒有問題的。
------解决方案--------------------select *
from temp6 a
left join temp7 b on a.age=b.age
left join temp8 c on a.age=c.age2
------解决方案--------------------对的吧
------解决方案--------------------这个貌似没什么关系的。就像a+b+c 与a+(b+c)其实结果一样的