刚才已经提问过一遍,以为那个就是答案,结果不是我想要的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值表示,该用户是否有权限查看该工程。
一个用户经审批后,可以在一定期限内,查询某几个工程的信息。工程表
工程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值表示,该用户是否有权限查看该工程。
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,工程名也是有"新"字的,但为什么显示不出来?
userpk = 1
and startdate<=getdate() and enddate>=getdate()then 1 else 0 end)
from projectsNew, [permissions]
where projectname like '%新%'
and projectsNew.projectid = [permissions].projectid