当前用户编号user_id=1,首先要从accounts_userroles中查询根据user_id查询出角色类型role_type,如果role_type=1则从项目表project中查询所有项目编号,如果为2则从project2中根据user_id查询出项目编号,有没有方法不通过存储过程一次性将数据查出来的?

解决方案 »

  1.   


    declare @role_type int
    select @role_type=role_type from accounts_userroles where user_id=1
    if @role_type=1
    begin
     select * from project
    end
    else
    begin
     select * from project2 where userid=1
    end
      

  2.   

    建议针对role_type分别建立project视图,然后将视图union起来就可以了.注意列名要一致啊.这些视图应该可以应用到你的其它需求中.
      

  3.   

    select * from (
    select *,1 as role_type from project
    union all
    select *,2 as role_type from project2)B
    inner join accounts_userroles A on A.role_type =B.role_type
    where A.user_id = 1
    这样的?
    LZ有结构数据的话,给些结构数据吧.
      

  4.   


    accounts_userroles表
    user_id____role_id____project_id
    ___1____________1________0
    accounts_roles表
    role_id____description____role_type
    __1________超级管理员________1
    pdms_project表对,我的就是您那种编写方式
    首先accounts_userroles和account_roles表连接,根据user_id找出对应的
    角色编号role_type,再根据role_type查数据,如果为1则从pdms_project表中
    查询出所有项目编号,如果为2则从accounts_userroles表中根据user_id查出
    项目编号
      

  5.   

    DECLARE @i INT
    SET @i = 1  --可以修改为2SELECT  *
    FROM    ( SELECT    * ,
                        1 AS role_type
              FROM      project
              UNION ALL
              SELECT    project2.* ,
                        2 AS role_type
              FROM      project2
              INNER JOIN accounts_userroles C ON C.USER_ID = project2.USER_id
            ) B
            INNER JOIN accounts_userroles A ON A.role_type = B.role_type
    WHERE   A.user_id = @i