Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/11/2016, 19:54
Quarterpunch
 
Fecha de Ingreso: abril-2008
Ubicación: Morelia, México
Mensajes: 18
Antigüedad: 16 años, 1 mes
Puntos: 0
Pregunta Seleccionar opciones de tabla descartando las que ya estan

Hola buenas tardes, estoy intentando hacer un select de 3 tablas que tengo relacionadas y son las siguientes:
tbl_perfiles,
tbl_usuarios,
tbl_usuarios_perfiles

posiblemente estoy mal entendiendo el uso de NOT IN en la clausula WHERE, no tengo experiencia con MySQL

Esta es la consulta que no me arroja nada:

Código:
SELECT
	tbl_perfiles.perfilId,
	tbl_perfiles.perfilNombre
FROM
	tbl_usuarios_perfiles tbl_usuarios_perfiles,
	tbl_perfiles tbl_perfiles,
	tbl_usuarios tbl_usuarios
WHERE
	tbl_usuarios_perfiles.usuarioId = tbl_usuarios.usuarioId AND
	tbl_usuarios_perfiles.perfilId = tbl_perfiles.perfilId AND
	tbl_usuarios_perfiles.perfilId NOT IN (tbl_usuarios_perfiles.perfilId) AND
	tbl_usuarios.usuarioId = 1
Lo que pretendo hacer es de la tabla perfiles, traer en el select todos aquellos que no estén asignados al usuario, de tal forma que en un formulario poder seleccionar los que aun no hayan sido asignados y después insertar a la tabla tbl_usuarios_perfiles los elejidos

este es el codigo para crear las tablas:

tbl_perfiles
Código:
CREATE TABLE `tbl_perfiles` (
  `perfilId` int(11) NOT NULL AUTO_INCREMENT COMMENT 'llave primaria de la tabla',
  `perfilNombre` varchar(25) NOT NULL,
  `perfilDescripcion` varchar(45) NOT NULL COMMENT 'Descripción del perfil',
  `estatusId` int(11) NOT NULL,
  PRIMARY KEY (`perfilId`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8

tbl_usuarios
Código:
CREATE TABLE `tbl_usuarios` (
  `usuarioId` int(11) NOT NULL AUTO_INCREMENT COMMENT 'llave primaria de la tabla',
  `empresaId` int(11) NOT NULL,
  `usuarioNombre` varchar(20) NOT NULL,
  `nombreCompleto` varchar(254) NOT NULL,
  `usuarioPassword` varchar(100) NOT NULL,
  `usuarioEmail` varchar(60) NOT NULL,
  `usuarioCiudadId` int(11) NOT NULL,
  `usuarioVencePassword` date NOT NULL,
  `estatusId` int(11) NOT NULL,
  PRIMARY KEY (`usuarioId`),
  KEY `usuarioCiudadId` (`usuarioCiudadId`),
  KEY `empresaId` (`empresaId`),
  KEY `estatusId` (`estatusId`),
  CONSTRAINT `fk_tbl_usuarios_tbl_ciudades` FOREIGN KEY (`usuarioCiudadId`) REFERENCES `tbl_ciudades` (`ciudadId`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  CONSTRAINT `fk_tbl_usuarios_tbl_empresas` FOREIGN KEY (`empresaId`) REFERENCES `tbl_empresas` (`empresaId`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8
tbl_usuarios_perfiles

Código:
CREATE TABLE `tbl_usuarios_perfiles` (
  `usuariosPerfilesId` int(11) NOT NULL AUTO_INCREMENT COMMENT 'llave primaria de la tabla',
  `usuarioId` int(11) NOT NULL,
  `perfilId` int(11) NOT NULL,
  `perfilDefault` int(11) DEFAULT NULL,
  PRIMARY KEY (`usuariosPerfilesId`),
  KEY `fk_usuarios_perfiles_usuarios_idx` (`usuarioId`),
  KEY `fk_usuarios_perfiles_perfiles1_idx` (`perfilId`),
  CONSTRAINT `fk_usuarios_perfiles_perfiles1` FOREIGN KEY (`perfilId`) REFERENCES `tbl_perfiles` (`perfilId`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  CONSTRAINT `fk_usuarios_perfiles_usuarios` FOREIGN KEY (`usuarioId`) REFERENCES `tbl_usuarios` (`usuarioId`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8
de antemano agradezco cualquier ayuda, saludos.

P. D. realice una búsqueda en el foro para ver si hallaba algo que me diera una idea y no la encontré