Ver Mensaje Individual
  #2 (permalink)  
Antiguo 26/03/2012, 12:03
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: consulta varios join para 1 sola tabla

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
  1. mysql> SELECT * FROM personas;
  2. +------------+--------+----------+---------+-------------+-----------+
  3. | id_persona | nombre | apellido | id_arte | id_vivienda | id_musica |
  4. +------------+--------+----------+---------+-------------+-----------+
  5. |          1 | uno    | primero  |       1 |           2 |         3 |
  6. |          1 | dos    | segundo  |       4 |           5 |         6 |
  7. +------------+--------+----------+---------+-------------+-----------+
  8. 2 rows in set (0.00 sec)
  9.  
  10. mysql> SELECT * FROM afinidades;
  11. +-------------+-------------+
  12. | id_afinidad | descripcion |
  13. +-------------+-------------+
  14. |           1 | DaVinci     |
  15. |           2 | Minimalista |
  16. |           3 | Clasica     |
  17. |           4 | Picasso     |
  18. |           5 | Gotica      |
  19. |           6 | Rock & roll |
  20. +-------------+-------------+
  21. 6 rows in set (0.00 sec)
  22.  
  23. mysql> SELECT p.id_persona, p.nombre, p.apellido, a1.descripcion desc_arte,
  24.     -> a2.descripcion AS desc_vivienda,
  25.     -> a3.descripcion AS desc_musica
  26.     -> FROM personas p
  27.     -> INNER JOIN afinidades a1 ON p.id_arte = a1.id_afinidad
  28.     -> INNER JOIN afinidades a2 ON p.id_vivienda = a2.id_afinidad
  29.     -> INNER JOIN afinidades a3 ON p.id_musica = a3.id_afinidad;
  30. +------------+--------+----------+-----------+---------------+-------------+
  31. | id_persona | nombre | apellido | desc_arte | desc_vivienda | desc_musica |
  32. +------------+--------+----------+-----------+---------------+-------------+
  33. |          1 | uno    | primero  | DaVinci   | Minimalista   | Clasica     |
  34. |          1 | dos    | segundo  | Picasso   | Gotica        | Rock & roll |
  35. +------------+--------+----------+-----------+---------------+-------------+
  36. 2 rows in set (0.00 sec)

Si esto no es lo que buscas pon algunos datos de ejemplo y con gusto tratamos de ayudarte.

Saludos
Leo.