Hola Blashak:
Este es un problema que hemos comentado muchas veces en el foro, depende mucho de cómo quieres presentar tu información. Una posible respuesta sería utilizando un doble INNER JOIN sobre la tabla de usuarios, utilizando un ALIAS, esto sería más o menos así, supongamos que tienes esta información:
Código MySQL:
Ver original+------+--------+
| id | nombre |
+------+--------+
| 1 | HUGO |
| 2 | PACO |
| 3 | LUIS |
| 4 | DONALD |
+------+--------+
+------+------------+-------------+
| id | id_usuario | id_usuario2 |
+------+------------+-------------+
| 1 | 1 | 2 |
| 2 | 1 | 3 |
| 3 | 2 | 3 |
| 4 | 4 | 1 |
+------+------------+-------------+
Supongamos que quieres obtener la lista de amigos del usuario 1 = HUGO, podrías hacerlo asi:
Código MySQL:
Ver original -> WHERE A.id_usuario
= 1 OR A.id_usuario2
= 1; +------+--------+------+--------+
| id | nombre | id | nombre |
+------+--------+------+--------+
| 4 | DONALD | 1 | HUGO |
| 1 | HUGO | 2 | PACO |
| 1 | HUGO | 3 | LUIS |
+------+--------+------+--------+
Observa que en cada registro se repite la información del usuario HUGO, si sólo quieres listar la información de sus amigos, también lo puedes hacer con un UNION:
Código MySQL:
Ver original -> WHERE A.id_usuario
= 1 -> WHERE A.id_usuario2
= 1; +------+--------+
| id | nombre |
+------+--------+
| 2 | PACO |
| 3 | LUIS |
| 4 | DONALD |
+------+--------+
Creo que esto te debe servir. Dale un vistazo y nos comentas.
Saludos
Leo.