Hola ilen:
Si entendí correctamente, lo que tienes es una triple unión entre tablas correcto?... para poder unir cada campo de la tabla personas con su respectivo en la tabla de afinidades debes hacer TRES JOIN'S hacia la misma tabla, utilizando un alias distinto para cada una de ellas. Sería más o menos así:
Código MySQL:
Ver original+------------+--------+----------+---------+-------------+-----------+
| id_persona | nombre | apellido | id_arte | id_vivienda | id_musica |
+------------+--------+----------+---------+-------------+-----------+
| 1 | uno | primero | 1 | 2 | 3 |
| 1 | dos | segundo | 4 | 5 | 6 |
+------------+--------+----------+---------+-------------+-----------+
+-------------+-------------+
| id_afinidad | descripcion |
+-------------+-------------+
| 1 | DaVinci |
| 2 | Minimalista |
| 3 | Clasica |
| 4 | Picasso |
| 5 | Gotica |
| 6 | Rock & roll |
+-------------+-------------+
mysql
> SELECT p.id_persona
, p.nombre
, p.apellido
, a1.descripcion desc_arte
, -> a2.descripcion
AS desc_vivienda
, -> a3.descripcion
AS desc_musica
-> INNER JOIN afinidades a1
ON p.id_arte
= a1.id_afinidad
-> INNER JOIN afinidades a2
ON p.id_vivienda
= a2.id_afinidad
-> INNER JOIN afinidades a3
ON p.id_musica
= a3.id_afinidad
; +------------+--------+----------+-----------+---------------+-------------+
| id_persona | nombre | apellido | desc_arte | desc_vivienda | desc_musica |
+------------+--------+----------+-----------+---------------+-------------+
| 1 | uno | primero | DaVinci | Minimalista | Clasica |
| 1 | dos | segundo | Picasso | Gotica | Rock & roll |
+------------+--------+----------+-----------+---------------+-------------+
Si esto no es lo que buscas pon algunos datos de ejemplo y con gusto tratamos de ayudarte.
Saludos
Leo.