Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/11/2008, 16:15
Keysher
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 21 años, 5 meses
Puntos: 17
Select que no sé por dónde agarrarla

Buenas,

Hacía tiempo que no tocaba en serio SQL y ahora me he topado con un sistema algo complejo en el que no acabo de dar con la sentencia correcta.

Supongamos las siguientes tablas:

Users: UserID, Name, etc...
Groups: GroupID, Name, etc...
Relacion Users_Groups: UserID, GroupID

Por otra parte tenemos un sistema de Permisos:

Permissions: PerID, etc...
Roles: RolID, etc....

Relación Roles_Permisos: PerID, RolID

Finalmente existe una tabla Projects: ProjectID, etc...
Y una asoaciación entre un Proyecto, un grupo de usuarios y un rol.

Es decir, tenemos una serie de usuarios, que pueden pertenecer a uno o varios grupos.
Por otra parte tenemos un listado de permisos, que pertenecen a uno o varios roles.
Por último tenemos proyectos, que tienen grupos y roles asociados.


La pregunta es, ¿Cómo hago una consulta que, dado un proyecto y un usuario, me saque todos los ID de permisos relacionados con ese proyecto en concreto y ese usuario? Basicamente tendría que sacar primero todos los grupos a los que pertenece ese usuario y que, a su vez, el grupo pertenezca al proyecto dado. Y de esos grupos, sacar los roles de cada grupo, y de los roles sus permisos asociados.

Es un poco (bastante) lioso y no sé muy bien cómo abordarlo...

con un SELECT "normal" consigo sacar los permisos de un determinado grupo, pero si el usuario pertenece a varios grupos dentro del mismo proyecto no lo hace correctamente.

Saludos.

Edito: Siento que el título del tema no sea muy explicativo, pero no sabía qué poner!