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

[SOLUCIONADO] Seleccionar opciones de tabla descartando las que ya estan

Estas en el tema de Seleccionar opciones de tabla descartando las que ya estan en el foro de Mysql en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 03/11/2016, 19:54
 
Fecha de Ingreso: abril-2008
Ubicación: Morelia, México
Mensajes: 18
Antigüedad: 16 años
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é

Etiquetas: opciones, select, sql, tabla
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 19:12.