2017-02-14 6 views
0

私は3つのテーブルUsers、RolesおよびUserRolesを持っています。ユーザーにはIdというプライマリキーがあり、ロールにはIdというプライマリキーがあり、UserRolesにはUserIdとRoleIdという2つの外部キー参照があります。SQLクエリの結果としてテーブルの値に挿入

ユーザーロールとロールテーブルのSQLクエリの結果として、UserId、RoleIdのペアをUserRolesに挿入する必要があります。

INSERT INTO UserRoles (UserId, RoleId) VALUES (SELECT ID FROM Users WHERE Email = '[email protected]', SELECT ID From Roles WHERE Name = 'Admin'); 

私はこれをどのように操作を行うことができます。私はこのようにそれらを使用する必要が

SELECT ID FROM Users WHERE Email = '[email protected]'; 

SELECT ID From Roles WHERE Name = 'Admin'; 

クエリは、このようなものです。

答えて

1

これを試してください。

INSERT INTO UserRoles (UserId, RoleId) 
    SELECT a.ID, b.ID 
    FROM Users as a,Roles as b 
    WHERE a.Email='[email protected]' 
    AND b.Name='Admin'; 
1

これはあなたのために働く必要があります。..

declare @userId int, @roleid int 
    select @userId = Id FROM Users 
    select @roleid = Id from Roles 
    insert into UserRoles (UserId, RoleId) value (@userId,@roleid) 

selectクエリにあなたのWHERE条件をご検討ください。

+0

ご回答ありがとうございます。 @Manishによって与えられた答えを受け入れる必要があります。なぜなら、SQLカラムフィールドのデータ型を知る必要はないからです。 –

+1

同じ結果とパスを実現する複数の方法があります。:) – user7417866

関連する問題