2017-05-17 80 views
-1

從ID_B更新記錄我有二維:T-SQL - SQL服務器 - 基於ID_A

Permissions 

- Permission_ID 
- Permission_Desc 

Users: 

- User_ID 
- User_Name 

而且一個Fact_Tables

- User_ID 
- Permission_ID 
- Salary_Amt 

現在什麼,我想說明的是將User_ID 1具有的權限應用於User_2。將User_ID_1的權限複製到User_ID_2

如何在Update語句中執行此操作?

謝謝!

+1

一個快速的方法是刪除分配給User_2所有權限。然後: '插入Fact_Tables從那裏USER_ID = 1'假設User_2 Fact_Tables選擇2,Permission_ID,Salary_Amt具有ID = 2和USER_1具有ID = 1。我還假設User_2應具有相同的'Salary_Amt'作爲USER_1 – Petaflop

+0

這裏不是簡單的更新嗎? 'update fact_table set permission_id =(從user_id = user_1_id的fact_table中選擇permission_id)其中user_id = user_2_id'?你有什麼嘗試? –

+1

@Rigerta不會工作,因爲它似乎是一個多對多的關係 – Petaflop

回答

-1

不是有效的方法,但是,我想這應該做我理解正確的問題提供工作: -

Create Table #permissions (permission_id int, permission_desc 
    varchar(100)) 

    insert into #permissions values (1, 'select'),(2,'insert') 

    Create Table #users (user_idd int, user_desc varchar(100)) 

    insert into #users values (1, 'John'),(2,'Rohn') 

    Create Table #fact_table (user_idd int, permission_id int, sal int) 

    insert into #fact_table values (1,1,200), (2,2,300) 

    select * from #fact_table 
    update a set a.permission_id = b.permission_id from #fact_table a 
    inner join (
    select (select user_idd from #fact_table where user_idd=2) user_idd, 
    permission_id, sal from #fact_table where permission_id = 1 
    ) b on a.user_idd=b.user_idd