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

Consuta SQL para extraer los amigos de un miembro de una red social

Estas en el tema de Consuta SQL para extraer los amigos de un miembro de una red social en el foro de Bases de Datos General en Foros del Web. Hola, estoy haciendo una pequeña red social y en estos momentos intento extraer los usuarios que son amigos del miembro de la red que tiene ...
  #1 (permalink)  
Antiguo 04/12/2009, 06:12
 
Fecha de Ingreso: septiembre-2008
Mensajes: 146
Antigüedad: 15 años, 8 meses
Puntos: 1
Consuta SQL para extraer los amigos de un miembro de una red social

Hola,

estoy haciendo una pequeña red social y en estos momentos intento extraer los usuarios que son amigos del miembro de la red que tiene id=1 en la tabla "usuario".

Como podeis imaginar tengo dos tablas como estas (usuario y amigo_usuario)

Código:
+-------+-------+--------+
| Name  |  Age  |  Town  |
+-------+-------+--------+
|  Juan |    23 | Madrid | 
| Maria |    45 |   Lima | 
| Pedro |    40 |  Leon  | 
+-------+-------+--------+

+-------+-------+--------+
| user1 | user2 | estado |
+-------+-------+--------+
|     1 |     2 |      1 | 
|     3 |     1 |      1 | 
|     2 |     2 |      1 | 
+-------+-------+--------+
El siguiente codigo me da como resultado el registro correspondiente a "Maria":

Código:
SELECT s.id AS s__id, s.name AS s__name, s.edad AS s__edad, s.town AS s__town, a.user1 AS a__user1, a.user2 AS a__user2, a.estado AS a__estado FROM usuario s LEFT JOIN amigo_usuario a ON s.id = a.user2 WHERE a.user1 = 1 AND a.estado = 1
Como podeis ver en en la tabla "amigo_usuario", Pedro tambien es amigo de Juan. Mi duda: ¿cual seria la consulta SQL que pueda extraer tambien la amistad de Pedro?


Un saludo

Javi
  #2 (permalink)  
Antiguo 07/12/2009, 16:48
Avatar de stone_neo  
Fecha de Ingreso: abril-2004
Ubicación: Peru
Mensajes: 438
Antigüedad: 20 años
Puntos: 15
Respuesta: Consuta SQL para extraer los amigos de un miembro de una red social

No estoy muy seguro, pero intenta con esto :

Código:
SELECT s.id AS s__id, s.name AS s__name, s.edad AS s__edad, s.town AS s__town, 
       a.user1 AS a__user1, a.user2 AS a__user2, a.estado AS a__estado 
FROM usuario s, amigo_usuario a
WHERE a.estado = 1 and a.user1 = 1 and a.user1=s.id
UNION
SELECT s1.id AS s__id, s1.name AS s__name, s1.edad AS s__edad, s1.town AS s__town, 
       a1.user1 AS a__user1, a1.user2 AS a__user2, a1.estado AS a__estado 
FROM usuario s1, amigo_usuario a1
WHERE a1.estado = 1 and a1.user2 = 1 and a1.user2 = s1.id
__________________
Rubén Darío Huamaní Ucharima
Web : http://www.gorilla-soft.com
Usuario Linux #382 100 :-)
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 03:36.