有三张表,企业表、企业操作员表、操作记录表企业表E
EID             ENAME 
企业操作员EUSER
USERID             USERNAME
操作历史记录表JNL
JNLID          JNLDATA       JNLTIME其中一个企业下面有N个操作员
现在想统计出从未有操作员登录过本系统的企业(请注意是企业)
尽量不要用IN、NOT IN的写法,用最优化的写法

解决方案 »

  1.   

    企业表E
    EID ENAME  
    企业操作员EUSER
    USERID USERNAME EID
    操作历史记录表JNL
    JNLID JNLDATA JNLTIME  USERID
      

  2.   


    SELECT * 
    FROM E 
    WHERE NOT EXISTS (SELECT COUNT(1) FROM JNL A,EUSER B WHERE A.USERID = B.USERID AND B.EID = E.EID)
      

  3.   

    用not exists试试看?
    select * from E where not exists (select 1 from EUSER u, JNL j where u.userid=u.userid and e.eid=u.eid )
      

  4.   

    使用NOT EXIST和相关子查询。
    代码如下:SELECT E.EName
    FROM E
    WHERE NOT EXISTS(SELECT * FROM EUSER, JNL WHERE EUSER.USERID = JNL.USERID AND EUSER.EID = E.EID);
      

  5.   

    select EID,ENAME  from 
    (select * from E ta join  EUSER tb  on ta.EID=tb.EID(+))t1 
    join
    (select * from EUSER tb join JNL tc on tb.USERID =tc.USERID(+)) t2 
    on t1.USERID =t2.USERID(+) and t1.EID=t2.EID(+) 
    where t1.USERID is null or t2.JNLID is null
    1)没有操作员的公司(不会有记录)
    2)有操作员,但当没有操作记录的公司(没有记录)