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

Combinar campos de dos tablas en consulta

Estas en el tema de Combinar campos de dos tablas en consulta en el foro de Mysql en Foros del Web. Buenas tardes, les expongo mi caso para ver si pueden hecharme una manita; resulta que tengo dos tablas una donde tengo los datos y otra ...
  #1 (permalink)  
Antiguo 09/05/2012, 14:54
Avatar de castillo_depaz  
Fecha de Ingreso: abril-2012
Mensajes: 11
Antigüedad: 12 años
Puntos: 0
Mensaje Combinar campos de dos tablas en consulta

Buenas tardes,
les expongo mi caso para ver si pueden hecharme una manita; resulta que tengo dos tablas una donde tengo los datos y otra donde esta el nombre de esos datos de la siguiente manera:
Tabla1
codigo|product1|product2|product3|
1 5 -- --
2 2 5 --
3 1 2 5

Tabla2
codigo|nombreproducto
1 | Arroz
2 | Miel
3 | Frutas
4 | Cafe

Y lo que quiero es hacer una consulta que me muestre lo siguiente:

Consulta
codigo|product1|product2|product3|
1 Cafe -- --
2 Miel Cafe --
3 Arroz Miel Cafe

Soy nuevo en esto de mysql y no se como empezar; de antemano muchas gracias
  #2 (permalink)  
Antiguo 09/05/2012, 15:17
Avatar de fahs82  
Fecha de Ingreso: abril-2012
Ubicación: guadalajara
Mensajes: 139
Antigüedad: 12 años
Puntos: 12
Respuesta: Combinar campos de dos tablas en consulta

lo solucionas con los cross joins pero no estoy seguro de como manejarlos en mysql , investigo algo y te posteo codigo en lo posible o si no ya sabes por lo menos en que buscar
  #3 (permalink)  
Antiguo 09/05/2012, 15:18
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 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.
  #4 (permalink)  
Antiguo 09/05/2012, 15:27
Avatar de fahs82  
Fecha de Ingreso: abril-2012
Ubicación: guadalajara
Mensajes: 139
Antigüedad: 12 años
Puntos: 12
Respuesta: Combinar campos de dos tablas en consulta

http://www.roseindia.net/sql/sqljoin/mysql-cross-join.shtml
  #5 (permalink)  
Antiguo 09/05/2012, 17:14
Avatar de castillo_depaz  
Fecha de Ingreso: abril-2012
Mensajes: 11
Antigüedad: 12 años
Puntos: 0
Sonrisa Respuesta: Combinar campos de dos tablas en consulta

Gracias a todos por sacarme de este apuro, espero que pueda ayudar a alguien mas como uds lo hicieron.
Viva la comunidad!!!!


Etiquetas: campos, combinar, sql, tabla, tablas
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 02:53.