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

consulta varios join para 1 sola tabla

Estas en el tema de consulta varios join para 1 sola tabla en el foro de Mysql en Foros del Web. Hola amigos tengo 1 problema con consulta mysql y quiesiera que me ayuden: tengo una tabla personas donde tiene los siguientes campos: ---------- personas ---------- ...
  #1 (permalink)  
Antiguo 26/03/2012, 11:34
Avatar de ilen  
Fecha de Ingreso: febrero-2009
Mensajes: 125
Antigüedad: 15 años, 2 meses
Puntos: 2
consulta varios join para 1 sola tabla

Hola amigos tengo 1 problema con consulta mysql y quiesiera que me ayuden:

tengo una tabla personas donde tiene los siguientes campos:

----------
personas
----------
id_persona (int)
nombre (varchar)
apellido (varchar)
id_arte (int)
id_vivienda (int)
id_musica (int)

los tres campos 'id_arte','id_vivienda','id_musica' la descripcion esta en 1 tabla que se llama 'afinidades' que contiene los siguientes campos

----------
afinidades
----------
id_afinidad (int)
descripcion (varchar)

donde id_afinidad esta en los 3 campos de la tabla persona...
como hago para que de un 'select' obtener la descripcion de los 3 campos 'id_vivienda' 'id_arte' 'id_musica' segun el ID que tiene la tabla 'persona'... si me hago entender ??

espero me ayuden...
  #2 (permalink)  
Antiguo 26/03/2012, 12:03
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 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.
  #3 (permalink)  
Antiguo 28/03/2012, 03:38
Avatar de ilen  
Fecha de Ingreso: febrero-2009
Mensajes: 125
Antigüedad: 15 años, 2 meses
Puntos: 2
Respuesta: consulta varios join para 1 sola tabla

Wao cuanta explicación.. disculpa el atraso me encentro haciendo un proyecto web que no tengo tiempo ni para comer... voy aplicar lo que me dijistes ya te dire como me fue, salu2
  #4 (permalink)  
Antiguo 03/04/2012, 15:17
Avatar de ilen  
Fecha de Ingreso: febrero-2009
Mensajes: 125
Antigüedad: 15 años, 2 meses
Puntos: 2
Respuesta: consulta varios join para 1 sola tabla

Gracias, esa era la solución.

Etiquetas: join, select, sql, tabla, campos
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 18:43.