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

Mostrar registros q no aparescan en la busqueda...

Estas en el tema de Mostrar registros q no aparescan en la busqueda... en el foro de Mysql en Foros del Web. Hola a todos....se me presento un problema y no encuentro solucion, mucho agradeceria su ayuda... El problema: Tengo dos tablas(empresas,usuarios), existe una relacion entre ellas ...
  #1 (permalink)  
Antiguo 17/10/2006, 12:45
 
Fecha de Ingreso: abril-2005
Mensajes: 124
Antigüedad: 19 años
Puntos: 0
Mostrar registros q no aparescan en la busqueda...

Hola a todos....se me presento un problema y no encuentro solucion, mucho agradeceria su ayuda...

El problema: Tengo dos tablas(empresas,usuarios), existe una relacion entre ellas a traves de un campo llamado id usuario. Entonces cuando creo usuarios, asigno a que empresa pertenecen. Lo que se aplicaba hasta el momento es que cuando eliminabas una empresa, por logica, los usuarios que estaban unidos a esa empresa se eliminaban. Ahora me estan pidiendo q se puede eliminar la empresa mas no sus usuarios, ya que el administrador decidira a q empresa van a pasar esos usuarios que estaban en la empresa eliminada. Si hago una consulta con el inner join entre estas dos tablas donde el campo id usuario es igual, lo hace perfectamente. Ahora mi pregunta es como muestro aquellos usuarios donde no hay relacion entre esta(usuarios) y empresas, me explico?

gracias por su ayuda.
  #2 (permalink)  
Antiguo 17/10/2006, 13:22
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años
Puntos: 47
Mijo lo que tu necesitas es crear una tercera tabla ya que tienes algo así como una relación de muchos a muchos (en teoría)

Por lo que dices supongo que el campo idusuario es clave primaria en la tabla de usuarios y foranea primaria en la de empresas y junto con idempresa forman una clave primaria compuesta en la tabla de empresas.

Deberías de dejar a cada tabla con un solo campo como clave primaria, idusuario y idempresa respectivamente y crear una tercera tabla cuyos campos son las claves primarias de ambas tablas. Así te vas a divertir haciendo selects

Ahora, en tu estructura actual deberías de:

SELECT * FROM Usuarios WHERE idusuario not in (SELECT DISTINCT idusuario FROM Empresa)

Almuerzate ese query

Cualquier cosa avisas
  #3 (permalink)  
Antiguo 17/10/2006, 16:06
 
Fecha de Ingreso: abril-2005
Mensajes: 124
Antigüedad: 19 años
Puntos: 0
Developer 9, gracias por tu ayuda, por alguna razon el mysql no acepta el distinct, asi que investigue y encontre algo parecido a esto:

SELECT table1.* FROM table1 LEFT JOIN table2 ON table1.id=table2.id WHERE table2.id IS NULL;

...y supa!!!!, listo.

gracias.
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 20:51.