Я использую C # ASP.NET в Visual Studio 2005, а также SQL Server 2005.
В настоящее время у меня есть проект, который требует, чтобы я проверял каждого пользователя на наличие конфликтующих ролей, которыми он может обладать.
У меня есть 2 базы данных. Users
и ConflictingRoles
. Ниже приведена структура 2 таблиц:


В Users
у меня есть 2 уникальных пользователя с 4 ролями в каждом.
В ConflictingRoles
у меня 4 ряда конфликтующих ролей.
Джеймс и Дженнифер имеют по 4 роли, и каждая из них конфликтует друг с другом.
Я хочу сформировать несколько SQL-запросов, чтобы проверить каждую роль каждого пользователя, если они конфликтуют с любой другой ролью, которой он обладает.
У меня есть приблизительное представление о том, как будет происходить процесс, но я не уверен, как изобразить идею, используя несколько запросов SQL:
1) По одной строке за раз, grep значение usr. UserID
и usr. Role
из Users usr стол.
Сохраните usr. UserID
во временной переменной tempUID
и найдите подходящие значения usr. Role
с ср. Role
in ConflictingRoles cf table.
2) Если usr. Role
соответствует ср. Role
, grep значение ср. ConflictingRole
и выполнить все usr. Role
in Users table WHERE
usr. UserID
соответствует tempUID
.
Если найдено совпадение / конфликт между ср. ConflictingRole
с usr. Role
пользователя tempUID
, введите ср. ConflictingRole
, usr. Role
и user. Name
в отдельную таблицу, Результаты .
3) Повторите это для всех ролей, которыми обладает каждый пользователь, и для всех пользователей.
По сути, пользователь не может играть обе роли, которые конфликтуют друг с другом. Если это так, сохраните имя, роль и конфликтующую роль в таблице.
Это очень смущает меня, и я не уверен, есть ли более простой способ сделать это.
Если нет, я бы хотел попросить вас, ребята, помочь с SQL-запросами, которые мне нужно будет сформировать с помощью приведенной выше логической последовательности.
SqlConnection thisConnection = new SqlConnection("Data Source=DS");
SqlCommand nonqueryCommand = thisConnection.CreateCommand();
thisConnection.Open();
//multiple sql commands
nonqueryCommand.CommandText = "<SQL Query>";
Console.WriteLine(nonqueryCommand.ExecuteNonQuery());
...
Спасибо за любую помощь заранее.