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

consulta con inner join

Estas en el tema de consulta con inner join en el foro de Mysql en Foros del Web. hola amigos del foro. tengo 3 tablas.. 1. de relacion de amigos 2. de las noticias que generan los amigos 3. noticias que voy ocultando ...
  #1 (permalink)  
Antiguo 11/08/2011, 09:04
 
Fecha de Ingreso: junio-2010
Ubicación: cali-colombia
Mensajes: 28
Antigüedad: 13 años, 10 meses
Puntos: 0
consulta con inner join

hola amigos del foro.

tengo 3 tablas..
1. de relacion de amigos
2. de las noticias que generan los amigos
3. noticias que voy ocultando

la idea es hacer un inner join entre mis amigos y las noticias que generan..
por ejemplo ese inner join me retorna 100 resultados y si oculto 3 noticias se generan 3 registros en la tabla 3 de noticias_ocultas
entonces la consulta que necesito deberia retornarme 97 registros..
estaba intentando con algo como esto:

SELECT * FROM amigos as a, noticias as m
where a.id_amigo = m.id_usuario and a.id_mascota= 2695
and m.id_noticia not in (select id_noticia from noticias, noticias_ocultas where id_usuario = 2695)
order by m.id desc

pero no me resta los 3 resultados..
  #2 (permalink)  
Antiguo 11/08/2011, 12:47
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: consulta con inner join

Hola cristian_botina:

En tu subconsulta estás poniendo dos tablas en el from pero no estás uniéndolas, por lo tanto se está realizando un producto cartesiano:

Código:
(select id_noticia 
from noticias, noticias_ocultas 
where id_usuario = 2695
Si ejecutas sólo la subconsulta, ¿cuántos registros te retorna?

Aquí dependería de la estructura de tus tablas para ver si es necesario hacer la unión o bastaría con que en la subconsulta aparezca solamente la tabla noticias_ocultas.

Como recomendación, cuando utilices más de una tabla en tu consulta utilica JOIN's. aunque el resultado es el mismo el tiempo de respuesta puede variar significativamente, es decir

En lugar de hacer esto:

Código:
FROM Tabla1, Tabla2 WHERE Tabla1.Campo = Tabla2.Campo
Haz esto:

Código:
FROM Tabla1 INNER JOIN Tabla2 ON Tabla1.Campo = Tabla2.Campo
Saludos
Leo.

Etiquetas: join, left, union
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:22.