Estoy trabajando con una base de datos existente y tratando de escribir una consulta sql para obtener toda la información de la cuenta, incluidos los niveles de permiso. Esto es para una auditoría de seguridad. Queremos descargar toda esta información de forma legible para que sea más fácil compararla. Mi problema es que hay una tabla puente/enlace para los permisos, por lo que hay múltiples registros por usuario. Quiero obtener resultados con todos los permisos para un usuario en una línea. Aquí hay un ejemplo:Ayuda de consulta SQL con la tabla de puente
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 se vincula a una tabla con el nombre del Permiso y lo que hace. La derecha es igual que 1 = Vista, 2 = modificar y etc.
Lo que vuelva de una consulta básica para el usuario 1 es:
UserId UserName PermissionId Rights
1 John 10 1
1 John 11 2
1 John 12 3
Lo que me gustaría algo como esto:
UserId UserName Permission1 Rights1 Permission2 Right2 Permission3 Right3
1 John 10 1 11 2 12 3
Idealmente, quisiera esto para todos los usuarios. Lo más parecido que he encontrado es la función Pivot en SQL Server 2005. http://geekswithblogs.net/lorint/archive/2006/08/04/87166.aspx El problema con esto por lo que puedo decir es que tengo que nombrar cada columna para cada usuario y no estoy seguro de cómo obtener el nivel de derechos Con datos reales, tengo alrededor de 130 usuarios y 40 permisos diferentes.
¿Hay alguna otra manera con sql que puedo hacer esto?
I * saber * He visto casi exactamente esta pregunta en este sitio al menos dos veces. Pero no puedo encontrarlo –