数据库查询有关问题(急)

数据库查询问题(急)在线等
我现在做一个功能就是:文件可以公开,可以私有,可以对那一个部门公开。我的表是这样设计的。isOpen=1的时候是对所有的人公开,当isOpen=2的时候就是私有,对一个部门公开文件是 isOpen=1 ,openId=2(openId是部门)2代表的是一个部门。
我现在查询遇到问题了。。。。。当我查询的时候。如我是财物部的人员,我可以查询所有公开的文件,和只对我财物部公开的文件。select * from dbo.t_Files where isOpen=1 or openId=2 当我这样写的时候它只要满足一个条件的时候它就会查询出来。select * from dbo.t_Files where isOpen=1 and openId=2这样写它只能满足对部门的查询。。对所的人公开的文件有的查询不出来。。因为它条件不满足第二个!

我现在想做的查询是:又能查询全部公开的,还能查询对某个部门公开的请问这样要怎么写才能满足呀。。。还是表设计的不够好~~请各位大哥给点代码参考参考…………在线等

------解决方案--------------------
从你的描述看,你的表中的语义规定的不够好。
isOpen=1时,居然隐含着两种情况。
倒不如这样,
isOpen=1, 所有公开
isOpen=2, 私有
isOpen=3, 局部公开, openId为公开部分的id
这样就可以区分了:
财务部查询:所有公开的文件,和只对我财物部公开的文件
select * from dbo.t_Files where isOpen=1 or (isOpen=3 and openId=2)
------解决方案--------------------
楼上回答得很好
你这个功能,我也做过

当时是这样实现的,按你的字段来
若isOpen=1 对所有部门公开,则openId=0表示没有针对指定的部门公开
若isOpen=2 对指定的部门公开;则openId=2,2表示部门编号
若isOpen=3对管理员私有,只有管理员才可以查看;则openId=0表示没有针对指定的部门公开

查询:若财务部门ID为2
财务部查询:所有公开的文件,和只对我财物部公开的文件,
select * from dbo.t_Files where isOpen=1 or (isOpen=2 and openId=2)


财务部查询:只对我财物部公开的文件
select * from dbo.t_Files where isOpen=2 and openId=2

------解决方案--------------------
的确是!