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

Comparar tablas para validación de datos

Estas en el tema de Comparar tablas para validación de datos en el foro de Mysql en Foros del Web. Hola buen día: Antes que nada agradezco su atención y tiempo, esperando y puedan orientarme un poco. Bueno, la situación en general es el siguiente: ...
  #1 (permalink)  
Antiguo 31/03/2014, 12:43
 
Fecha de Ingreso: julio-2012
Mensajes: 18
Antigüedad: 12 años, 5 meses
Puntos: 0
Exclamación Comparar tablas para validación de datos

Hola buen día:

Antes que nada agradezco su atención y tiempo, esperando y puedan orientarme un poco.
Bueno, la situación en general es el siguiente: De la tabla user debo obtener los usuarios que presenten alguna incompatibilidad en sus roles asignados.

La estructura de las tablas que tengo es la siguiente

Código MySQL:
Ver original
  1. (
  2.   ID                int(11) NOT NULL AUTO_INCREMENT,
  3.   OPRID         varchar(100) NOT NULL,       //IDENTIFICADOR DEL USUARIO
  4.   NAMEUSR    varchar(100) NOT NULL,       //NOMBRE DEL USUARIO
  5.   ROLNAME    varchar(100) NOT NULL,       //ROL DEL USUARIO
  6.   PRIMARY KEY (ID),
  7. )
  8.  
  9. CREATE TABLE rol_incompatible (
  10.   ID_INC      int(11) NOT NULL AUTO_INCREMENT,
  11.   ID_RGL     int(11) NOT NULL,                       //ID de la regla (LLAVE FORANEA)
  12.   ROLNAME  varchar(100) NOT NULL,              //Nolbre del rol incompatible
  13.   PRIMARY KEY (ID_INC),
  14.   KEY rol_in_fk1 (ID_RGL),
  15.   CONSTRAINT rol_in_fk FOREIGN KEY (ID_RGL) REFERENCES reg_in (ID_RGL)
  16. )
  17.  
  18. CREATE TABLE regla_incompatibilidad
  19. (
  20.         ID_RGL      INT NOT NULL AUTO_INCREMENT,          //ID de la regla
  21.         NAMERGL   VARCHAR(100) NOT NULL,                   //Nombre de la regla
  22.         PRIMARY KEY (ID_RGL)                
  23. )
-La tabla user contiene una lista de usuarios con sus roles asignados.

user

ID OPRID NAMEUSR ROLNAME
1 PPEREZ PEPITO PEREZ CONSULTA PORTAL
2 PPEREZ PEPITO PEREZ SOLICITUD DE GASTOS
3 PPEREZ PEPITO PEREZ CONSULTA USUARIOS
4 PPEREZ PEPITO PEREZ APROBACION DE GASTOS
5 PPEREZ PEPITO PEREZ CONSULTA PRODUCTOS

En la tabla rol_incompatible, se tiene el registro de los roles que estando juntos presentan incompatibilidad

[rol_incompatible

ID ID_RGL ROLNAME
1 1 APROBACION DE NOMINA
2 1 MODIFICACION DE NOMINA
3 2 SOLICITUD DE GASTOS
4 2 APROBACION DE GASTOS

En la tabla regla_incompatibilidad, se registran nuevas reglas de incompatibilidad, está ligada con la tabla rol_incompatible, ya que si agrego una nueva regla de incompatibilidad debo asignarle los roles que estén ligados a esa regla.

regla_incompatibilidad

ID_RGL NAMERGL
1 REGLA INCOMPATIBILIDAD DE NOMINA
2 REGLA DE INCOMPATIBILIDAD DE GASTOS

Por ejemplo: Analizando las 3 tablas anteriores podemos observar que el usuario PEPITO PEREZ presenta una incompatibilidad de roles, los roles SOLICITUD DE GASTOS y APROBACIÓN DE GASTOS no pueden estar asignados aun mismo usuario, como se indica en la REGLA DE INCOMPATIBILIDAD DE GASTOS. Entonces como les comento lo que necesito es una consulta en la cual pueda obtener los usuarios que presenten este tipo de incompatibilidades.
De antemano nuevamente agradezco su apoyo.

Saludos

Última edición por gnzsoloyo; 31/03/2014 a las 17:19
  #2 (permalink)  
Antiguo 31/03/2014, 17:14
Avatar de fegm_4  
Fecha de Ingreso: febrero-2013
Mensajes: 114
Antigüedad: 11 años, 9 meses
Puntos: 8
Respuesta: Comparar tablas para validación de datos

En principio no entiendo porque todos los usuarios son los mismos. Eso se presta a confusión. ¿Puedes explicarte mejor en ese sentido? quizás colocar mejores tablas.

Lo que planteas podría hacerse con un INNER JOIN, juntando las tablas y estableciendo las condiciones que pides. Pero para eso, necesitaría ver mejor un ejemplo mas claro. Otra cosa que veo es que no usas los id como identificadores, quizás me equivoco, pero deberías pensar usarlos
__________________
--
Aqui fegm_4
  #3 (permalink)  
Antiguo 31/03/2014, 17:22
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Comparar tablas para validación de datos

Cita:
Iniciado por fegm_4 Ver Mensaje
En principio no entiendo porque todos los usuarios son los mismos. Eso se presta a confusión. ¿Puedes explicarte mejor en ese sentido?
No son diferentes usuarios. Es el conjunto de perfiles o permisos que posee un único usuario, pero la tabla muestra el resultado de un JOIN. Por eso hay valores que parecen repetidos.
En todos los sistemas de permisos, las tablas tienen una entrada por cada perfil o permiso que el usuario tiene asignado. Si tiene N perfile, tendrá N entradas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: comparaciones, consultasmysql, tablas, tablasmysql
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 03:13.