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

Consulta no coincidentes

Estas en el tema de Consulta no coincidentes en el foro de Mysql en Foros del Web. Buenas tardes, no consigo realizar una consulta para buscar los datos que están en una tabla, pero no en la otra. Tengo una tabla con ...
  #1 (permalink)  
Antiguo 03/02/2012, 07:09
 
Fecha de Ingreso: abril-2011
Mensajes: 103
Antigüedad: 13 años
Puntos: 3
Consulta no coincidentes

Buenas tardes,

no consigo realizar una consulta para buscar los datos que están en una tabla, pero no en la otra.

Tengo una tabla con un listado de consultores, identificados por un Id único.

Tengo otra tabla donde estos consultores reportar los trabajos que van realizando y en esa tabla se guarda el identificador único del consultor para ver quién lo ha realizado.

Quiero hacer una consulta que me saque un listado de los consultores que no han introducido datos en la tabla de trabajos. Es decir que busque los que sí han introducido datos y compare el listado con la tabla de consultores y me devuelva los que no coinciden.

Dejo algunos intentos que he hecho. Si es necesario pongo la estructura de las tablas.
Primer intento
Código:
SELECT consultores.consultor AS consultor FROM consultores LEFT JOIN trabajos ON consultores.Ident_consultor = trabajos.consultores_Ident_consultor 
WHERE (((trabajos.f_inicio)>='$fechainicio' And (trabajos.f_inicio)<='$fechafin'));
Segundo intento
Código:
SELECT consultores.Ident_consultor, consultores.consultor AS consultor, trabajos.f_inicio, trabajos.f_fin, trabajos.consultores_Ident_consultor FROM consultores, trabajos
WHERE consultores.Ident_consultor NOT IN (select trabajos.consultores_Ident_consultor trabajos WHERE ((consultores.Ident_consultor = trabajos.consultores_Ident_consultor) AND (trabajos.f_inicio)>='$fechainicio' And (trabajos.f_inicio)<='$fechafin'));
Tercer intento
Código:
SELECT consultores.consultor from consultores, trabajos WHERE (((consultores.Ident_consultor = trabajos.consultores_Ident_consultor)
AND (trabajos.consultores_Ident_consultor IS NULL)) AND ((trabajos.f_inicio)>='$fechainicio' And (trabajos.f_inicio)<='$fechafin')) ;
Gracias y un saludo!
  #2 (permalink)  
Antiguo 03/02/2012, 07:51
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Consulta no coincidentes

Primer intento corregido (supongo que tienes un idTrabajos)

Código MySQL:
Ver original
  1. SELECT DISTINCT consultores.consultor AS consultor
  2. FROM consultores LEFT JOIN trabajos
  3. ON consultores.Ident_consultor = trabajos.consultores_Ident_consultor
  4. trabajos.idTrabajos IS NULL
  5. trabajos.f_inicio>='$fechainicio' And trabajos.f_inicio<='$fechafin';

Segundo intento, corregido

Código MySQL:
Ver original
  1. SELECT consultores.consultor AS consultor
  2. FROM consultores
  3. WHERE consultores.Ident_consultor
  4.                 NOT IN (select trabajos.consultores_Ident_consultor
  5.                              FROM trabajos
  6.                              WHERE trabajos.f_inicio>='$fechainicio'
  7.                                          And trabajos.f_inicio<='$fechafin');

Tercer intento

Código MySQL:
Ver original
  1. SELECT consultores.consultor
  2. FROM consultores, trabajos
  3. WHERE consultores.Ident_consultor = trabajos.consultores_Ident_consultor
  4.     AND trabajos.consultores_Ident_consultor IS NULL
  5.     AND trabajos.f_inicio>='$fechainicio'
  6.     And trabajos.f_inicio<='$fechafin';

No se puede corregir

consultores.Ident_consultor = trabajos.consultores_Ident_consultor
AND trabajos.consultores_Ident_consultor IS NULL

Si A=B y B es nulo Luego A es nulo como A es PK de una tabla nunca puede ser nulo....

Aquí intentabas la misma solucion que en el primero pero sin el LEFT JOIN y buscando nulos donde no los puede haber....
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 06/02/2012, 05:31
 
Fecha de Ingreso: abril-2011
Mensajes: 103
Antigüedad: 13 años
Puntos: 3
Respuesta: Consulta no coincidentes

Muchas gracias por tu ayuda quimfv! He utilizado la segunda opción y funciona a la perfección! un saludo!
  #4 (permalink)  
Antiguo 06/02/2012, 08:16
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Consulta no coincidentes

Si la primera ahora que la reviso no esta bien puesto que la restriccion de fecha y la de nullo juntas no tienen sentido.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Etiquetas: join, select, 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 17:16.