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

[SOLUCIONADO] unión de dos tablas (publicaciones solo de amigos que sigo en un muro)

Estas en el tema de unión de dos tablas (publicaciones solo de amigos que sigo en un muro) en el foro de Mysql en Foros del Web. Hola que tal :) tengo un problema con la sintaxis del SELECT, lo que estoy haciendo es tipo muro donde estan todas la publicaciones de ...
  #1 (permalink)  
Antiguo 30/06/2013, 20:51
Avatar de tnyplnc  
Fecha de Ingreso: junio-2013
Ubicación: mexicali
Mensajes: 64
Antigüedad: 10 años, 9 meses
Puntos: 3
unión de dos tablas (publicaciones solo de amigos que sigo en un muro)

Hola que tal :) tengo un problema con la sintaxis del SELECT, lo que estoy haciendo es tipo muro donde estan todas la publicaciones de los usuarios registrados, pero quiero que solamente aparezcan en mi muro los usuarios que tengo como amigos que sigo(los que yo solicite). Tengo 3 tablas

una tabla se llama MURO(id_muro, publicacion, id_usuario)
ej. 1, hola como estan?, tony
otra tabla se llama AMIGOS(id_amigo, id_solicitado, id_solicitante)
ej. 1, 78, 34.
otra tabla se llama USUARIOS(id_usuario, nombre)
ej. 34, jaime.




Manejo sistema de usuarios con sesiones, de alli saco el ID del usuario.

Esto es el SELECT que hago para capturar todas las publicaciones
$rs=mysql_query("SELECT * FROM muros ORDER BY id_muro DESC");

como hacer que me aparezcan en el muro solo las publicaciones de mis amigos con un SELECT

muchas gracias de antemano :)
  #2 (permalink)  
Antiguo 01/07/2013, 02:18
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: unión de dos tablas (publicaciones solo de amigos que sigo en un muro)

Código MySQL:
Ver original
  1. SELECT m.*,u.* FROM muros m INNER JOIN USUARIOS u ON m.id_usuario=u.id_usuario
  2. WHERE m.id_usuario IN (SELECT id_solicitado FROM AMIGOS WHERE id_solicitante=XXXX)
  3. ORDER BY m.id_muro DESC

o esta

Código MySQL:
Ver original
  1. SELECT m.*,u.* FROM (muros m INNER JOIN USUARIOS u ON m.id_usuario=u.id_usuario )
  2. INNER JOIN (SELECT id_solicitado FROM AMIGOS WHERE id_solicitante=XXXX) sbc
  3. ON m.id_usuario=sbc.id_solicitante
  4. ORDER BY m.id_muro DESC

donde XXXX es el id_usuario recuperado de la session.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 01/07/2013 a las 02:23
  #3 (permalink)  
Antiguo 01/07/2013, 14:36
Avatar de tnyplnc  
Fecha de Ingreso: junio-2013
Ubicación: mexicali
Mensajes: 64
Antigüedad: 10 años, 9 meses
Puntos: 3
Respuesta: unión de dos tablas (publicaciones solo de amigos que sigo en un muro)

muchas gracias quimfv por tu respuesta, me sirvio de mucho tu sentencia, pero lo hice sin INNER

SELECT * FROM muros
WHERE id_usuario IN (SELECT id_solicitado FROM amigos WHERE id_solicitante=$idusuario) ORDER BY id_muro DESC


y si quiero que tambien se imprima mis publicaciones la sentencia seria asi:

SELECT * FROM muros
WHERE id_usuario IN (SELECT id_solicitado FROM amigos WHERE id_solicitante=$idusuario) or id_usuario='$idusuario' ORDER BY id_muro DESC


el $idusuario es la session

me agarra todas las publicaciones de mis amigos y ademas las publicaciones que yo he mandado en el muro

MUCHAS GRACIAS :D

Última edición por tnyplnc; 01/07/2013 a las 18:50
  #4 (permalink)  
Antiguo 02/07/2013, 01:48
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: unión de dos tablas (publicaciones solo de amigos que sigo en un muro)

Como pones el nombre de cada autor?
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #5 (permalink)  
Antiguo 08/07/2013, 13:59
Avatar de tnyplnc  
Fecha de Ingreso: junio-2013
Ubicación: mexicali
Mensajes: 64
Antigüedad: 10 años, 9 meses
Puntos: 3
Respuesta: unión de dos tablas (publicaciones solo de amigos que sigo en un muro)

No habia visto tu respuesta quimfv, una disculpa.
bueno para poner el nombre lo que hago es poner otra sentencia
ya que tengo el id_usuario de la publicacion lo que hago es la siguiente sentencia...
Código SQL:
Ver original
  1. SELECT nombre FROM usuarios WHERE id_usuario='$idexterno'
el idexterno es igual al usuario que escribio la publicacion.
Talvez no sea algo muy optimo, tu ponias la tabla usuario en la sentencia para agarrar el nombre tambien?
crees que afecte el servidor si lo hago de esa manera en la que lo hago?
Un saludo quimfv

Etiquetas: publicaciones, select, sql, tabla, tablas
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 06:19.