Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

[SOLUCIONADO] Relacion JOINS en 3 tablas

Estas en el tema de Relacion JOINS en 3 tablas en el foro de PostgreSQL en Foros del Web. quizas este post sea repetido o algo pero tengo una duda acerca de esto... tengo 3 tablas menu ( id_menu , id_padre,nombre_ruta,ruta) Relacion Unaria de ...
  #1 (permalink)  
Antiguo 03/04/2015, 14:11
 
Fecha de Ingreso: enero-2014
Mensajes: 47
Antigüedad: 6 años, 9 meses
Puntos: 0
Relacion JOINS en 3 tablas

quizas este post sea repetido o algo pero tengo una duda acerca de esto...

tengo 3 tablas

menu(id_menu, id_padre,nombre_ruta,ruta) Relacion Unaria de 1/N

tipo_usuario(id_tipo_usuario,tipo)

y

privilegios(menu_id,tipo_usuario_id) Relacion N/M

supongamos que en la tabla tipo usuario esten los siguientes datos(Administrador y Tecnico) en la tabla menu existan varios link para acceder a varios sitios, y la tabla privilegio es una conexion entre ambas.... lo que quiero saber es traerme los datos del menu que aun no ha sido asignado al tecnico

Código SQL:
Ver original
  1. SELECT menu.*
  2. FROM menu_privilegio
  3. INNER JOIN usuario_tipos ON
  4. menu_privilegio.id_usuario_tipos = usuario_tipos.id
  5. RIGHT JOIN menu ON
  6. menu.id = menu_privilegio.id_menu
  7. WHERE menu.id_menu_padre != 0

hasta aqui voy bien pero me jala tambien los datos asignados al tecnico y los que aun no han sido asignado.... será que me falta una condicion o esta mal planteada la consulta????? no se si deba usar Union o algo por el estilo

espero su ayuda =S ando un poco enredado con esto
  #2 (permalink)  
Antiguo 03/04/2015, 17:25
 
Fecha de Ingreso: enero-2014
Mensajes: 47
Antigüedad: 6 años, 9 meses
Puntos: 0
Respuesta: Relacion JOINS en 3 tablas

para explicar mejor el asunto

en la tabla tipos_usuario tengo

1 - Administrador
2-. Tecnico

en la tabla menu tengo

1|0|Permisos de Usuario| Permiso |------------->ESTO ES SOLO DEL ADMIN
2|1|Registrar Permiso | permiso/registrar |-------------->ESTO ES SOLO DEL ADMIN
3|1|Editar Permiso | permiso/editar |-------------->ESTO ES SOLO DEL ADMIN
4|0|Visita Tecnica | Visita |--------------->ESTO SI ES DEL TECNICO
5|4| Registrar Visita | visita/registrar |---------------->ESTO ES DEL TECNICO
6|4| Editar Visita | visita/editar ESTO ES DEL TECNICO

y por ultimo en la tabla privilegio tengo

5|2| AQUI ESTOY DICIENDO QUE REGISTRAR VISITA ES DEL TECNICO
6|2| AQUI ESTOY DICIENDO QUE EDITAR VISITA ES DEL TENICO

ENTONCES Necesito una consulta para extraer los datos de menú donde no se asigna a un técnico en la tabla privilegios

es decir que me aparezca

1|0|Permisos de Usuario| Permiso
2|1|Registrar Permiso | permiso/registrar
3|1|Editar Permiso | permiso/editar

Última edición por NelsonJPG; 03/04/2015 a las 21:05
  #3 (permalink)  
Antiguo 03/04/2015, 21:42
 
Fecha de Ingreso: enero-2014
Mensajes: 47
Antigüedad: 6 años, 9 meses
Puntos: 0
Respuesta: Relacion JOINS en 3 tablas

lo colocare como solucionado creo haber resuelto el problema sin embargo espero que me orienten en caso de estar equivocado o si no es la consulta mas efectiva

Código SQL:
Ver original
  1. SELECT *
  2. FROM menu
  3. INNER JOIN tipo_usuario ON
  4. tipo_usuario.id_tipo_usuario NOT IN(SELECT privilegio.id_menu FROM privilegio)
  5. LEFT JOIN privilegio ON
  6. menu.id_menu = privilegio.id_menu
  7. WHERE
  8. menu.id_menu_padre != 0 AND
  9. privilegio.id_menu IS NULL OR
  10. menu_privilegio.id_tipo_usuario != 1

Etiquetas: join, multiples, privilegios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:43.