日期:2014-05-17  浏览次数:20750 次

如何查询为空的数据?
SQL code

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可能会为空,
SQL code

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)


这样好像不对,应该如何写呢?

------解决方案--------------------
貌似是5表呢..

这样试试:
SQL code

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)

------解决方案--------------------
倒数第二行的or去掉 没注意.
------解决方案--------------------
试试用外连接方式?以下SQL可能需要附加其他条件
SQL code
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;

------解决方案--------------------
看着蛋疼