表a                 表b(a,b的关联表)     表c
            id_a , 字段a1 ,字段a2      id_a ,id_b                  id_b ,字段c1 ,字段c2            要求显示如下效果:
            字段a1 字段a2 字段c1(有则显示无则显示为空)我是这样写的: 如果表b中有关联则可以查出来 ,但是我想要没有关联,也要把a表数据显示出来只是让字段c2为空就行了。 SELECT Operatormanagement.* , Rightsgroup.R_Name FROM Operatormanagement, Rightsgroup,UserrolesAssociate
    where Operatormanagement.om_ID=UserrolesAssociate.Operatormanagement_ID 
  AND  UserrolesAssociate.Rightsgroup_ID=Rightsgroup.R_ID
  AND Operatormanagement.om_Status=5  请高手帮帮忙啊!

解决方案 »

  1.   

    太乱 
    你所指的没有关联的是 表A中有表B中没有的数据对吗?
    如果是的话
    关联字段 not in (select 关联字段 from 表B)
      

  2.   

    left join 就是有则显示无则null
      

  3.   

    select a.*,b.Name,c.PName
    from a inner join b on a.bid=b.id(a.bid与b.id达成外键关系或者隐式引用)
    left join c on b.cid=c.id(b.cid与c.id达成外键关系或者隐式引用)
    where 条件
      

  4.   

    用left join代替 INNER JOIN
      

  5.   

    向有空的表连接.如果 a 有空,则 a right b on a....=b.... 或 b left a on b....=a....
    如果 b 有空,则反向.
      

  6.   

    left join
    right join
      

  7.   

    两种方法。
    1。使用left join,上面已有描述。2。使用子查询,大致为:
    select a.* , (select b.r_name from Rightsgroup b , c where a.om_ID = c.Operatormanagement_ID and c.Rightsgroup_ID = b.R_ID and ) 
    from Operatormanagement a where a.om_Status=5