日期:2014-05-19  浏览次数:20666 次

一个关于SQL查询的问题,求高手
现在有3张表
表一:EID (ID)
  ENAME(名称)

表二:ESID(ID)
  EID(外键,表一ID)
  SID(外键,表三ID)

表一:SID (ID)
  SNAME(名称)

现在需要做的是查询出表一的所有信息,并且显示在表二中是否有关联信息存在。如果有显示1没有显示0。从外部会传入表三的ID作为查询条件。
以下是我的语句:
SELECT ei.eid, ei.ename, ei.edept, test = CASE WHEN lifnr IS NOT NULL AND 
  es.SID = '1' THEN 1 ELSE 0 END
FROM TABLE1 ei LEFT OUTER JOIN
  TABLE2 es ON ei.EID = es.EID

不过这很明显是错的。表二没有数据的时候数据看起来没问题,但是一旦有数据就会出错。数据库是SQL SERVER2000。


------解决方案--------------------
SQL code

select a.eid, a.ename, case when b.sid is null then 0 else 1 end as flag
from table1 a left join table2 b on a.eid = b.eid

------解决方案--------------------
+1
探讨
SQL code


select a.eid, a.ename, case when b.sid is null then 0 else 1 end as flag
from table1 a left join table2 b on a.eid = b.eid