Ver Mensaje Individual
  #3 (permalink)  
Antiguo 09/05/2012, 15:18
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: Combinar campos de dos tablas en consulta

Hola castillo_depaz:

Para unir dos o más tablas, la mejor opción es utilizar JOIN's, (LEFT, RIGTH o INNER dependiendo del caso)... en tu caso, al tener 3 campos distintos relacionados sobre la misma tabla, puedes hacer un JOIN para cada columna UTILIZANDO UN ALIAS. checa este script:

Código MySQL:
Ver original
  1. mysql> SELECT * FROM tabla1;
  2. +--------+----------+----------+----------+
  3. | codigo | product1 | product2 | product3 |
  4. +--------+----------+----------+----------+
  5. |      1 |        5 |     NULL |     NULL |
  6. |      2 |        2 |        5 |     NULL |
  7. |      3 |        1 |        2 |        5 |
  8. +--------+----------+----------+----------+
  9. 3 rows in set (0.07 sec)
  10.  
  11. mysql> SELECT * FROM tabla2;
  12. +--------+----------------+
  13. | codigo | nombreproducto |
  14. +--------+----------------+
  15. |      1 | Arroz          |
  16. |      2 | Miel           |
  17. |      3 | Frutas         |
  18. |      4 | Cafe           |
  19. |      5 | Otro           |
  20. +--------+----------------+
  21. 5 rows in set (0.00 sec)
  22.  
  23. mysql> SELECT T1.codigo,
  24.     -> T2_a.nombreproducto, T2_b.nombreproducto, T1.product3
  25.     -> FROM tabla1 T1
  26.     -> LEFT JOIN Tabla2 T2_a ON T1.product1 = T2_a.codigo
  27.     -> LEFT JOIN Tabla2 T2_b ON T1.product2 = T2_b.codigo;
  28. +--------+----------------+----------------+----------+
  29. | codigo | nombreproducto | nombreproducto | product3 |
  30. +--------+----------------+----------------+----------+
  31. |      1 | Otro           | NULL           |     NULL |
  32. |      2 | Miel           | Otro           |     NULL |
  33. |      3 | Arroz          | Miel           |        5 |
  34. +--------+----------------+----------------+----------+
  35. 3 rows in set (0.00 sec)

observa que llamo DOS VECES a la tabla2, pero CON ALIAS DISTINTOS:

Código:
LEFT JOIN Tabla2 T2_a
LEFT JOIN Tabla2 T2_b  
Cada tabla la uno con una columna en específico:

Código:
ON T1.product1 = T2_a.codigo
ON T1.product2 = T2_b.codigo;
Tendrías que hacer lo mismo para el caso del product3, agregando otro LEFT JOIN, con un alias distinto y uniéndolo al campo product3.

Saludos
Leo.