select T.A_ID,D.DATACONTENT from tablea T Inner join TABLEB D ON T.A_ID=D.A_ID
Where T.DATA_TYPE = 1
Union All
select T.A_ID,D.DATACONTENT from tablea T Inner join TABLEC D ON T.A_ID=D.A_ID
Where T.DATA_TYPE = 0

解决方案 »

  1.   

    领教了~~~多谢  题目再改一下,变成题目(二):
     
    TABLEA
     A_ID(INT)   DATA_TYPE(BIT)  DATA_ID(INT) TABLEB
     B_ID(INT)  DATACONTENT(VARCHAR)  两个表以‘列名(类型)’形式给出,如上。现在,想实现的是TABLEA内连接TABLEB或不连接,连接与否是根据DATA_TYPE来判定的,DATA_TYPE是bit类型,如果是1连接TABLEB,如果是0则不连接,连接关联字段是DATA_ID与B_ID。   最后,想要选出三个字段(A_ID,DATA_TYPE,DATACONTENT)的结果.SQL是不是该这么写.
      
     select A_ID,DATA_TYPE
      from TABLEA 
      where DATA_TYPE = 0
      union all
      select TABLEA.A_ID,TABLEA.DATA_TYPE,TABLEB.DATACONTENT)
      from TABLEA 
      inner join TABLEB
      on  TABLEA.DATA_ID = TABLEB.B_ID
      where DATA_TYPE = 1 
     路过的,点拨一下!!!
      

  2.   

    应该是:
     select TABLEA.A_ID,TABLEA.DATA_TYPE,TABLEB.DATACONTENT)
      from TABLEA 
      inner join TABLEB
      on  TABLEA.DATA_ID = TABLEB.B_ID
      where DATA_TYPE = 1如果需要把talea连接不到的也显示
     select TABLEA.A_ID,TABLEA.DATA_TYPE,TABLEB.DATACONTENT)
      from TABLEA 
      left join TABLEB
      on  TABLEA.DATA_ID = TABLEB.B_ID
    union
    相当于把2个结果集合成一个。