2017-05-17 17 views
-1

に基づいてID_Bから更新レコードIは2次元ました:T-SQL - SQL Serverの - ID_A

Permissions 

- Permission_ID 
- Permission_Desc 

Users: 

- User_ID 
- User_Name 

そして1 Fact_Tables

- User_ID 
- Permission_ID 
- Salary_Amt 

を今私が作るしようとしているものですUser_ID 1がUser_2に持つアクセス許可を適用します。 User_ID_1のパーミッションをUser_ID_2に複製する

どうすれば更新ステートメントでそれを行うことができますか?

ありがとうございます!

+1

簡単な方法は、ユーザ_2に割り当てられたすべての権限を削除することです。 User_2がID = 2で、User_1のIDが1であると仮定すると、Fact_TablesにFact_TablesからFact_Tables 2、Permission_ID、Salary_Amtを選択し、User_ID = 1'を挿入します。また、User_1はUser_2と同じSalary_Amtを持つ必要があります。 – 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 
関連する問題