У меня есть две таблицы:
cSc_user
: здесь хранится каждый пользователь.PK - camosGUID cSc_UserRole
: когда у пользователя есть роль, здесь сохраняется строка для этого пользователя
Для каждой роли, в которой находится пользователь, существует одна запись в cSc_userRole
.FK для camosGUID
в этой таблице UserGUID
.Также есть столбец RoleGUID
.Я хочу рассмотреть только одну роль с RoleGUID = AD3BB
.
. Теперь моя цель - создать запись в cSc_UserRole
для каждого пользователя, у которого нет записи для роли с RoleGuid = AD3BB
.Дополнительно я хочу исключить двух пользователей с camosGUID = -1
и 2032
.
Это то, что я уже сделал.Проблема в том, что он создает запись в cSc_UserRole
также, если пользователь уже имеет роль.Поэтому он дублируется после выполнения запроса.
INSERT INTO [csc_userrole] ([RSRC], [Deleted], [DateNew], [DateChanged],
[UserNew], [UserChanged], [camosGUID],
[UserGUID], [RoleGUID])
SELECT
0, 0, GETDATE(), GETDATE(),
2032, 2032, NEWID(),
camosGUID, 'AD3BB'
FROM
[cSc_User]
WHERE
csc_user.camosguid <> -1
AND csc_user.camosguid <> 2032
AND (csc_user.camosguid NOT IN (SELECT userguid
FROM cSc_Userrole) OR
csc_user.camosguid IN (SELECT userguid
FROM cSc_Userrole
WHERE roleguid <> 'AD3BB'
AND roleguid <> 'E5DEE'))