我建议LZ建1个表 
table1
项目ID  用户ID  权限
  1       1       1
  1       2       0
  2       1       1
  2       2       1
  2       3       0
  3 
  4
  5
意思是这样的如果你想让这个用户有修改项目1的权限
就把 用户ID1  的权限设置为1
否则为0
这样你在选择的时候就可以这样、
sql = "select * from table where Uid = 1 and  PRIVILEGE = 1";这样就是选出所有 用户ID为1的  全部所能看到的 修改的 项目了
不知道LZ觉得这样可好~~~

解决方案 »

  1.   

    补充一下这种结构
    table1
    项目ID  用户ID  权限
      1       1       1
      1       2       0
      2       1       1
      2       2       1
      2       3       0
      3 
      4
      5权限位可以用位操作
    1 读
    2 写
    4 删除
    ....
    用户1有读权限,在相应位为1
    有读写权限, 相应位为 3
    有全部权限  相应位为7
      

  2.   

    多谢楼上几位百忙之中能够帮忙.是不是用户表-权限表-文章表
    三表结合起来?
    如果我做查询的时候
    select * from 文章表,权限表 where 
      文章表.用户ID = 权限表.用户ID 
      AND
      文章表.部门ID = 权限表.部门ID
      AND
      文章表.项目ID = 权限表.项目ID 这样做.效率上如何~
      

  3.   

    用户登录了就可以把权限得到了,可以缓存,或放在session中,就读一次就可以了
      

  4.   

    其实就是2个表~~~
    一个表存~~~用户信息~~~以UID为主键一个表存~~~用户ID   ,文章ID,权限问题
                 1           1       1
                 1           2       0
                 1           3       1
                 2           1       1
                 2           2       0
                 2           3       0
                 3           1       1
               ……          ……    ……
    然后其他的表你自己建设~~~当你要选则用户的时候
    就一个 SELECT  把table1.UID  = table2.UID and 权限=1或者权限=2就可以了
    权限的1,2,3,4代表什么LZ自己定义就好~~~~
    是不是清楚了LZ??
      

  5.   

    楼上的似乎和我的流程有点出入.
    首先.由外界的用户发一个文章.
    然后这篇文章需要后台管理员审核.
    这篇文章在任意部门任意项目中.
    (部门1-10,每个部门下面又细分为项目1-10,这样就有100个组合了)
    然后管理员有若干个,每个管理员都有指定的权限.每个部门每个项目.
    最大的权限就是10个部门每10个项目都可以操作,这样一来就有100个权限了.而当这个最大权限的管理员进入后台的审核页面,就要把他有权限的文章全LIST出来.
    没权限的文章全部不显示.
    我试着用SELECT WHERE IN()来写.但效率极低.里面IN了一百个...
    T_T完全没在头绪
      

  6.   

    先说权限 5位数字组成 部门2位项目2位动作1位帖子总该有个分类吧 那个部门的那个项目的查询的时候拆分权限 取得部门 项目 动作 语句更简单了select * from `table` where 部门 and 项目 多权限无非是多几个and而已in这类的语句个人认为只会出现在错误的数据结构里 select * from `table1`,`table2`这样的多表查询已经是极限了
      

  7.   

    帖子没有分类.都是一次全读出来的.如果有分类的话就不用这么麻烦了唉.
    ===
    select * from `table` where 部门 and 项目 
    多权限无非是多几个and而已*加上AND不就是缩小查询范围了么? 多权限用OR(IN)的吧?