SELECT l.*,Dev.*,lt.*,DT.*,ORG.* FROM LogList l, DevList Dev,LogType lt,DevType DT,OrgList ORG
          WHERE l.DevCode=Dev.DevCode AND l.LogTypeID=lt.LogTypeID AND Dev.DevType=DT.DevTypeID or
          AND l.OrgCode=ORG.OrgCode;四个表联合查询,但是Loglist.DevCode,orgcode可能会为空,SELECT l.*,Dev.*,lt.*,DT.*,ORG.* FROM LogList l, DevList Dev,LogType lt,DevType DT,OrgList ORG
          WHERE l.DevCode=Dev.DevCode AND l.LogTypeID=lt.LogTypeID AND Dev.DevType=DT.DevTypeID or
          AND l.OrgCode=ORG.OrgCode or (l.devcode is null)or(l.orgcode is null)这样好像不对,应该如何写呢?

解决方案 »

  1.   

    貌似是5表呢..  这样试试:SELECT distinct l.*,Dev.*,lt.*,DT.*,ORG.* 
    FROM LogList l, 
         DevList Dev,
         LogType lt,
         DevType DT,
         OrgList ORG
    WHERE (l.DevCode=Dev.DevCode or l.devcode is null) 
          AND l.LogTypeID=lt.LogTypeID 
          AND Dev.DevType=DT.DevTypeID or
          AND (l.OrgCode=ORG.OrgCode or l.orgcode is null)
      

  2.   

    在select 后加distinct 可以去掉重复行
      

  3.   

    试试用外连接方式?以下SQL可能需要附加其他条件
    SELECT l.*,Dev.*,lt.*,DT.*,ORG.*
    FROM LogList l, DevList Dev,LogType lt,DevType DT,OrgList ORG
    WHERE l.DevCode(+)=Dev.DevCode
      AND l.LogTypeID(+)=lt.LogTypeID
      AND l.OrgCode(+)=ORG.OrgCode
      AND Dev.DevType=DT.DevTypeID;
      

  4.   


    SELECT l.*,Dev.*,lt.*,DT.*,ORG.* FROM LogList l, DevList Dev,LogType lt,DevType DT,OrgList ORG
              WHERE l.DevCode=Dev.DevCode AND l.LogTypeID=lt.LogTypeID AND Dev.DevType=DT.DevTypeID or
              AND l.OrgCode=ORG.OrgCode;
    minus
    SELECT '','',''....... l.* from  LogList l where DevCode is null or orgcode is null;