Я работаю с существующей базой данных и пытаюсь написать запрос sql, чтобы получить всю информацию об учетной записи, включая уровни разрешений. Это для аудита безопасности. Мы хотим с легкостью сбрасывать всю эту информацию, чтобы было легко сравнивать ее. Моя проблема в том, что для разрешений есть таблица моста/ссылки, поэтому для каждого пользователя есть несколько записей. Я хочу вернуть результаты со всеми разрешениями для одного пользователя в одной строке. Вот пример:Справка по SQL-запросу с таблицей моста
Table_User:
UserId UserName
1 John
2 Joe
3 James
Table_UserPermissions:
UserId PermissionId Rights
1 10 1
1 11 2
1 12 3
2 11 2
2 12 3
3 10 2
PermissionID ссылки на таблицу с именем разрешения и что он делает. Право, как 1 = зрения, 2 = изменение и т.д.
То, что я вернусь из основного запроса для пользователя 1:
UserId UserName PermissionId Rights
1 John 10 1
1 John 11 2
1 John 12 3
Что я хотел бы что-то вроде этого:
UserId UserName Permission1 Rights1 Permission2 Right2 Permission3 Right3
1 John 10 1 11 2 12 3
В идеале, мне бы это понравилось для всех пользователей. Ближайшая вещь, которую я нашел, - это функция Pivot в SQL Server 2005. http://geekswithblogs.net/lorint/archive/2006/08/04/87166.aspx Проблема с этим, что я могу сказать, это то, что мне нужно назвать каждый столбец для каждого пользователя, и я не уверен, как получить уровень прав. С реальными данными у меня около 130 пользователей и 40 разных разрешений.
Есть ли другой способ только с sql, что я могу это сделать?
Я * знаю * Я почти наверняка видел этот вопрос на этом сайте не менее двух раз. Но я не могу его найти. – 2008-11-18 17:32:24