如果 a left join b left join c 左联接
把谁都显示出来
还有就是 a left join b left join c on a.id=b.id and....
'and....'没见过这种写法

解决方案 »

  1.   

    还有就是 a left join b left join c on a.id=b.id and....
    'and....'没见过这种写法
      

  2.   

    这种写法是错的,应该是
    select * from a left join b on a.id=b.id left join c on a(or b).id=c.id
      

  3.   

    on ....后面不能加and 吗
      

  4.   

    多表联接限制条件的话只能在where后面吗
      

  5.   

    如果 a left join b left join c 左联接
    把谁都显示出来
    ---------------------------
    把a全部显示出来
    -----------------------------------------------------------------------
    还有就是 a left join b left join c on a.id=b.id and....
    'and....'没见过这种写法
    把a全部显示出来,只有符合and条件的才会显示出来,否则显示NULL
      

  6.   

    如果 a left join b left join c 左联接
    把谁都显示出来
    还有就是 a left join b left join c on a.id=b.id and....a left join b on a.id = b.id
      left join c on a.id = c.id
      

  7.   

    ---看这样一个例子
    ---创建测试环境      
    Declare @a Table(id int,Name1 Varchar(10))
      Insert @a Select 1,'a'
      Union All Select 2,'b'Declare @b Table(id int,Name2 Varchar(10))
      Insert @b Select 1,'aa'
      Union All Select 2,'bb'
      Union All Select 3,'cc'
      Union All Select 4,'dd'Declare @c Table(id int,Name3 Varchar(10))
      Insert @c Select 1,'aaa'
      Union All Select 2,Null
      Union All Select 3,'ccc'
    ---创建测试环境
    Select * From @a
    Select * From @b
    Select * From @c
    ---查看结果
    Select A.*,B.Name2,C.Name3
    From @a A 
    Left Join @b B On A.id=B.id
    Left Join @c C On A.id=C.id And C.Name3 Is Not Null
      

  8.   

    表@b中id为3和4的则不会显示出来
    表@c中同理id为3的则不会显示,但是Left Join @c C On A.id=C.id And C.Name3 Is Not Null
    我多接了个条件And C.Name3 Is Not Null
    因为在表@c中id为2的Name3 为空,那么它只会显示id为1的那条,id为2的Name3则为空
      

  9.   

    ---这样也许会更好理解点
    ---创建测试环境      
    Declare @a Table(id int,Name1 Varchar(10))
      Insert @a Select 1,'a'
      Union All Select 2,'b'Declare @b Table(id int,Name2 Varchar(10))
      Insert @b Select 1,'aa'
      Union All Select 2,'bb'
      Union All Select 3,'cc'
      Union All Select 4,'dd'Declare @c Table(id int,Name3 Varchar(10))
      Insert @c Select 1,'aaa'
      Union All Select 2,'bbb'
      Union All Select 3,'ccc'
    ---创建测试环境
    Select * From @a
    Select * From @b
    Select * From @c
    ---查看结果
    Select A.*,B.Name2,C.Name3
    From @a A 
    Left Join @b B On A.id=B.id
    Left Join @c C On A.id=C.id And C.Name3='aaa'  ---注意这里所接的条件
      

  10.   

    Select A.*,B.Name2,C.Name3
    From @a A 
    Left Join @b B On A.id=B.id
    Left Join @c C On A.id=C.id And A.id='1'
    如果是这样‘And A.id=1’怎么只会影响C.Name3得结果?
      

  11.   

    ---创建测试环境      
    Declare @a Table(id int,Name1 Varchar(10))
      Insert @a Select 1,'a'
      Union All Select 2,'b'Declare @b Table(id int,Name2 Varchar(10))
      Insert @b Select 1,'aa'
      Union All Select 2,'bb'
      Union All Select 3,'cc'
      Union All Select 4,'dd'Declare @c Table(id int,Name3 Varchar(10))
      Insert @c Select 1,'aaa'
      Union All Select 2,'bbb'
      Union All Select 3,'ccc'
    ---创建测试环境
    Select * From @a
    Select * From @b
    Select * From @c
    ---查看结果
    Select A.*,B.Name2,C.Name3
    From @a A 
    Left Join @b B On A.id=B.id
    Left Join @c C On A.id=C.id And C.Name3='aaa' ---注意这里所接的条件
    Where A.id=1  ---如果你只想显示表@a中id=1,这里加Where
      

  12.   

    我的意思是为什么只有C.Name3是null,C.Name2不是null
      

  13.   

    Select A.*,B.Name2,C.Name3
    From @a A 
    Left Join @b B On A.id=B.id               --B.Name2这里条件已成立
    Left Join @c C On A.id=C.id And A.id='1'  --C.Name3是null主要是这句的影响,
    在这里你可以改成A.id='2'看看结果是怎么的??你就会明白了
      

  14.   

    bibixiao() ( ) 信誉:100  2007-09-04 16:07:08  得分: 0 
    我的意思是为什么只有C.Name3是null,C.Name2不是null
    ----------------------------------------------------
     C.Name2是你不是打错了,C只有Name3,B.Name2吧
      

  15.   

    不是如果只有只有Name3,B.Name2
    应该是
    Select A.*,B.Name2,C.Name3
    From @a A 
    Left Join @b B On A.id=B.id And A.Name1='a'
    Left Join @c C On A.id=C.id And A.Name1='a'
      

  16.   

    bibixiao() ( ) 信誉:100  2007-09-04 16:24:04  得分: 0  
    不是如果只有只有Name3,B.Name2
    应该是
    Select A.*,B.Name2,C.Name3
    From @a A 
    Left Join @b B On A.id=B.id And A.Name1='a'
    Left Join @c C On A.id=C.id And A.Name1='a'
    -------------------------------------------------
    为什么不是????
    那么运行下面这句看看是什么结果??
    Select A.*,B.Name2,C.Name3
    From @a A 
    Left Join @b B On A.id=B.id And A.Name1='a'
    Left Join @c C On A.id=C.id
      

  17.   

    首先你要理解
    Left Join @b B On A.id=B.id 再去接And条件的目的,
    这里And之后这个条件的所起到的作用......
    可将On A.id=B.id And ..这句,理解成Where A.id=B.id And .....
      

  18.   

    Select A.*,B.Name2,C.Name3
    From @a A 
    Left Join @b B On A.id=B.id And A.Name1='a'
    Left Join @c C On A.id=C.id
    看了这句结果LZ应该明白了吧????
      

  19.   

    还有就是 a left join b left join c on a.id=b.id and....
    'and....'没见过这种写法
    -------------------------
    用where的话,where会同时对join的相关表先进行条件筛选再进行连接
    但我们一般都要求要join相关表中的所有记录,所以不能用where
    用and的话在join时不会筛选记录,而在select时筛选。。表达能力不太强...见谅
      

  20.   

    你还在为赚钱而烦劳吗??    那么请仔细看下面  你要相信你的眼睛  全球最大的交友搜索引擎AGLOCO网站将在伦敦股票市场上市,所有股份免费分享给会员,网站只收取网站所得的10%收益作为的运行费用。免费注册成为会员,你就是成正式股东(一人限一股),下载免费的Viewbar软件并使用,网站即向你计时付费,每月每人最多计付5个小时,即你每月能上5个小时的网就算完成任务了。可介绍你的亲朋好友参加,得到下线提成,支持4级下线。如你推荐4人参加,你的各层下线都能推荐4个下线,并且大家每月都能累计上5个小时的网,你每月的收入就有1710元人民币。如5个下线你每月的收入就是4886元~这一切都是免费的,机会难得,你还不参加?
      免费注册地址:
    www.agloco.com/r/BBHB0372
      由于是国外网站所以打开是可能有点慢  请耐心等待一会
      通过一个朋友的推荐,我最近加入了AGLOCO。现在我也把它推荐给您,因为我很中意AGLOCO的意念,并且我想邀您一同分享这个全新的、令人激动的互联网概念。AGLOCO的故事十分简单.您是否已意识到自己是多么的具有价值? 广告商、搜索引擎的供应商以及网络零售商为了想在您上网的时候吸引到您, 花了数以亿计的金钱。但是您能从中得到多少钱呢? 答案是零。AGLOCO却认为您应该得到相应的报酬。
      AGLOCO站在其会员的立场从这些公司挣得钱财。(例如,目前每个AOL用户使用一次Google搜索, Google都要支付给AOL10美分。然而Google仍有足够的利润来支付16亿美元给YouTube, 一个刚成立18个月的网站, 该网站的内容都是免费对其会员开放的!
    那么有什么附加条件吗? 没有。-没有木马程序, 没有弹出的广告也没有垃圾邮件-成为会员和使用软件都是免费的,并且AGLOCO是100%会员所有的。保护隐私是AGLOCO的核心价值观, 因此AGLOCO绝对不会出售或出租会员的信息。因此, 立即去AGLOCO注册对我们双方都有利。如果您使用此链接进行注册, 我将会因为成功推荐并有助于构建AGLOCO社区而自动得到推荐人积分.
    www.agloco.com/r/BBHB0372  请点击或复制到浏览器上注册
    注意:越早注册对你的发展是有利的