У меня есть система, которая имеет разные уровни для пользователей, зависит от того, что назначено для их учетной записи.Таким образом, существует четыре различных уровня 1,2,3 и 4. Первый уровень имеет полный доступ, а затем каждый уровень ниже сужается до доступа к данным.Поэтому, как только пользователь вошел в систему, я должен получить записи из своей таблицы разрешений.Одна учетная запись может иметь более одной записи в таблице разрешений.Вот пример:
AccountID UserName AccessLevel AccessType State City Building
FB3064A7 jfakey S F 05 NULL NULL
FB3064A7 jfakey S F 07 NULL NULL
Вы можете видеть, что есть столбец AccessLevel
, который может иметь Регион R
, Штат S
, Город C
или Здание B
.Если пользователь назначил доступ к региону, должна быть только одна запись.Если есть какой-либо другой уровень доступа (S, C или B), то у пользователя может быть несколько записей.Пример выше имеет государственный уровень.Этому аккаунту присвоено два разных состояния, и мой запрос вернет две строки.Мне интересно, я должен разделить это на два отдельных запроса или придерживаться одного запроса и объединить строки?Мне интересно, что было бы более эффективным, так как это страница входа, там много хитов.Вот пример моего запроса:
SELECT A.AccountID, A.UserName,
P.AccessLevel, P.AccessType, P.State, P.City, P.Building
FROM Accounts AS A WITH (NOLOCK)
INNER JOIN Permissions AS P WITH (NOLOCK)
ON A.AccountID = P.AccountID
WHERE UserName = 'jfakey'
Запрос выше - это то, что у меня сейчас, и это возвращает две строки.Если у кого-то есть предложения по поводу того, какой подход лучше, сообщите мне.