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

obtener datos que no estan en una tabla

Estas en el tema de obtener datos que no estan en una tabla en el foro de Bases de Datos General en Foros del Web. hola: tengo dos tablas en una de ellas tengo dos campos event_id y talent_id en la misma puede haber muchos event_id para un talent_id como ...
  #1 (permalink)  
Antiguo 21/04/2008, 09:04
Avatar de destor77  
Fecha de Ingreso: noviembre-2004
Ubicación: Gálvez, Santa Fe, Argentina
Mensajes: 2.654
Antigüedad: 19 años, 6 meses
Puntos: 43
obtener datos que no estan en una tabla

hola:
tengo dos tablas en una de ellas tengo dos campos event_id y talent_id en la misma puede haber muchos event_id para un talent_id como muchos talent_id para un event_id digamos un ralacion N:N en la mismo guardo los eventos creados en otra tabla y los "talentos" que son asignados a ese evento.

Bien despues tengo otra tabla donde guardo unos comentarios sobre el evento en el que participo un talento.

Yo necesito mostrar todos los talentos de un evento que no esten en la tabla donde guardo lo comentarios para eso uso esta consulta:

Código:
SELECT recruiters.first_name, recruiters.last_name, talents.fr_id, talents_events.talent_id, 
				talents_events.event_id, events.description, management.fr_id AS agent_frid
				FROM recruiters
				JOIN talents ON talents.prereg_id = recruiters.id
				JOIN talents_events ON talents_events.talent_id = recruiters.id
				JOIN EVENTS ON events.id = talents_events.event_id
				JOIN events_locations_agents ON events_locations_agents.event_id = events.id
				JOIN management ON management.id = events_locations_agents.agent_fr_id
				JOIN users ON users.id = management.user_id
				WHERE recruiters.id = talents_events.talent_id
				AND talents_events.complete =1
				AND events.id NOT
				IN (
				SELECT event_id
				FROM comments
				)
				AND talents_events.talent_id NOT
				IN (
				SELECT talent_id
				FROM comments
				)
				AND users.level =2
y me nada super, pero detecte que si por ejemplo en la tabla comentarios agrego un comentario para el talento 15 del evento 1, y para ese eventos tengo tambien a los talentos 1, 23, 42 esa consulta no me los muestra despues de agregar el comentario, facilmente uno se da cuenta que pasa eso porque la consulta encuentra el id del evento en la tabla comentarios, entonces ahora biene la pregunta...

"como hago para mostrar todos los talentos y eventos que no esten en la tabla comentarios y si ya existe el evento como mostrar los talentos que no estan en la tabla comentarios?"

espero que se haya entendido la pregunta y desde ya muchas gracias
  #2 (permalink)  
Antiguo 21/04/2008, 09:37
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Re: obtener datos que no estan en una tabla

Uff, dificil de seguirte, pero

Código:
SELECT recruiters.first_name, 
       recruiters.last_name, 
       talents.fr_id, 
       talents_events.talent_id, 
       talents_events.event_id, 
       events.description, 
       management.fr_id AS agent_frid
FROM recruiters JOIN talents 
          ON talents.prereg_id = recruiters.id
	         JOIN talents_events 
          ON talents_events.talent_id = recruiters.id
	        JOIN EVENTS 
          ON events.id = talents_events.event_id
		JOIN events_locations_agents 
          ON events_locations_agents.event_id = events.id
		JOIN management 
          ON management.id = events_locations_agents.agent_fr_id
		JOIN users 
          ON users.id = management.user_id
WHERE recruiters.id = talents_events.talent_id
  AND talents_events.complete =1
  AND events.id NOT
	IN (SELECT event_id
		FROM comments)
  AND talents_events.talent_id NOT
	IN (SELECT talent_id
		FROM comments)
  AND users.level =2
Las condiciones en rojo son redundantes, puedes eliminar la del where.

Luego intenta esto:

Código:
SELECT recruiters.first_name, 
       recruiters.last_name, 
       talents.fr_id, 
       talents_events.talent_id, 
       talents_events.event_id, 
       events.description, 
       management.fr_id AS agent_frid
FROM recruiters JOIN talents 
          ON talents.prereg_id = recruiters.id
	         JOIN talents_events 
          ON talents_events.talent_id = recruiters.id
	        JOIN EVENTS 
          ON events.id = talents_events.event_id
		JOIN events_locations_agents 
          ON events_locations_agents.event_id = events.id
		JOIN management 
          ON management.id = events_locations_agents.agent_fr_id
		JOIN users 
          ON users.id = management.user_id
WHERE talents_events.complete =1
   AND users.level =2  
   AND (events.id NOT
	          IN (SELECT event_id
                		FROM comments)
            OR talents_events.talent_id NOT
                  IN (SELECT talent_id
                 		FROM comments)) 
No estoy seguro de si he interpretado bien lo que necesitas pero por intentarlo no perderas nada.

Quim

Última edición por quimfv; 21/04/2008 a las 10:32
  #3 (permalink)  
Antiguo 21/04/2008, 11:48
Avatar de destor77  
Fecha de Ingreso: noviembre-2004
Ubicación: Gálvez, Santa Fe, Argentina
Mensajes: 2.654
Antigüedad: 19 años, 6 meses
Puntos: 43
Re: obtener datos que no estan en una tabla

anduvo a la perfección quimfv muchas gracias te he dejado un karma como agradecimiento
  #4 (permalink)  
Antiguo 22/04/2008, 02:34
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Re: obtener datos que no estan en una tabla

Grácias!!!
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 04:26.