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

Consultar datos que no aparecen en una consulta a tabla

Estas en el tema de Consultar datos que no aparecen en una consulta a tabla en el foro de Mysql en Foros del Web. Estimados: Desde ya agradeciendo desde ya su ayuda tengo el siguiente problema: Tengo 2 tablas: Contact donde almaceno contactos Asccontact donde almaceno contactos asociados ejemplo: ...
  #1 (permalink)  
Antiguo 05/09/2014, 15:00
 
Fecha de Ingreso: septiembre-2014
Ubicación: Puerto Montt
Mensajes: 2
Antigüedad: 9 años, 7 meses
Puntos: 0
Consultar datos que no aparecen en una consulta a tabla

Estimados:

Desde ya agradeciendo desde ya su ayuda tengo el siguiente problema:

Tengo 2 tablas:
Contact donde almaceno contactos
Asccontact donde almaceno contactos asociados

ejemplo:

Tabla Contact

id user_id name
1 1 pepe
2 1 juan
3 1 diego
4 1 marco
5 1 luis


Tabla Asccontact

id idcprincipal contactname contactid
1 1 juan 2
2 1 luis 5
3 5 pepe 1
3 4 luis 5
4 4 pepe 1


En mi base de datos realizo una consulta para obtener los contactos asociados entre si, por ejemplo:
Pepe ---> Juan, Luis

Hasta aqui todo bien, lo que necesito es listar los contactos que no estan asociados a pepe (es decir todos los contactos que no estan en la listas de asociados de un contacto en especifico: pepe, diego, marco)

He intentado hacer un left join pero en algo debo estar fallando ya que no muestra todos los contactos ya que muestra a pepe en la lista

Código:
SELECT c.name FROM contact as c LEFT JOIN asccontact as a ON c.id=a.contactid WHERE c.id!=1 AND c.user_id=1 AND a.contactid IS NULL
cual seria la forma correcta?
  #2 (permalink)  
Antiguo 06/09/2014, 03:58
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Consultar datos que no aparecen en una consulta a tabla

nixiatt,
no puedes buscar algo que no tengas archivado o que no puedas generar con la base. Lo primero es hacer un producto cartesiano sobre contact para establecer todos los posibles contactos usando como referencia el id de ese usuario y quitando, claro, los contactos con uno mismo. Esa consulta se convertirá en una tabla virtual con la que comparar los datos que tienes en Asccontact de ese usuario mediante left join. La consulta sería algo así:

Código MySQL:
Ver original
  1. SELECT t3.id2 FROM
  2.  (SELECT t1.id, t2.id id2 FROM contact t1 CROSS JOIN contact t2 WHERE t1.id <> t2.id AND t1.id = 1)t3
  3.  LEFT JOIN (SELECT idcprincipal, contactid FROM asccontact WHERE idcprincipal = 1)t4
  4.    ON t3.id2 =t4.contactid
  5.  WHERE t4.contactid IS NULL
  #3 (permalink)  
Antiguo 06/09/2014, 08:15
 
Fecha de Ingreso: septiembre-2014
Ubicación: Puerto Montt
Mensajes: 2
Antigüedad: 9 años, 7 meses
Puntos: 0
Respuesta: Consultar datos que no aparecen en una consulta a tabla

jurena:

Muchas gracias por responder y aclarar mi duda, la verdad es que hacia mucho que no utilizaba consultas entre tablas y estaba cofundida en el tema de los join
Cuando tenga hecha la consulta comentare como queda todo


Muy agradecida de la respuesta!

Etiquetas: consultar, 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 23:16.