刚才已经提问过一遍,以为那个就是答案,结果不是我想要的http://topic.csdn.net/u/20110303/11/3de5f082-b425-4050-b051-0880931636e1.html?seed=744734123&r=71919404#r_71919404
一个用户经审批后,可以在一定期限内,查询某几个工程的信息。工程表
工程ID 工程名
权限表
用户ID (可查询的)工程ID 开始时间 结束时间
(开始、结束时间表示在该段时间内可以查询这个工程)给出工程名、用户ID,查询出符合工程名的所有工程,并添加一个字段,表示该用户是否有权限查看这个工程的信息。原来我用的SQL语句是    select * from 工程表, 权限表 where 工程表.工程名 like '%新%' and 用户ID = 1 and 开始时间 <=getdate() and 结束时间>=getdate() and 工程表.工程ID=权限表.工程ID比如,当前有两个工程的工程名里有"新"字,但用户1只满足查询工程A,查询结果两个就显示一个工程A,
但现在需求改了,不是这样的结果。有把满足工程名条件的工程A、工程B全开出来,但增加一列,该列用0、1或bool值表示,该用户是否有权限查看该工程。

解决方案 »

  1.   

    我修改了那位大侠的SQL语句,select * , (case when projectsNew.projectid is null then 0 else 1 end) 
    from projectsNew right join [permissions]
    on projectsNew.projectid = [permissions].projectidand projectname like '%新%'
    and userpk = 1
    and startdate<=getdate() and enddate>=getdate()
    查出来的结果是工程ID 工程名 …… 用户ID 工程ID …… (无列名)(也就是显示bool值的列)
    37     新工程       1     37            1
    NULL   NULL         3     61            0有两列是对的,但第二列工程ID也是有的,是61,工程名也是有"新"字的,但为什么显示不出来?
      

  2.   

    select * , (case when 
    userpk = 1
    and startdate<=getdate() and enddate>=getdate()then 1 else 0 end) 
    from projectsNew, [permissions]
    where projectname like '%新%'
    and projectsNew.projectid = [permissions].projectid