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

Problema con consulta iiner join

Estas en el tema de Problema con consulta iiner join en el foro de Mysql en Foros del Web. hola que tal, disculpen la pregunta lo que pasa es que estoy estudiando y pues llegue a este punto que no logro resolver tengo las ...
  #1 (permalink)  
Antiguo 09/04/2012, 12:48
 
Fecha de Ingreso: agosto-2008
Mensajes: 272
Antigüedad: 15 años, 7 meses
Puntos: 1
Problema con consulta iiner join

hola que tal, disculpen la pregunta lo que pasa es que estoy estudiando y pues llegue a este punto que no logro resolver tengo las siguientes tablas

tamanios_cotizados
id----id_cotizacion---tam_final---tam_ext----aplicacion
28---12----------------12X15------15X52--------forros
29---12----------------15X41------15X85--------interiores



papel_cotizado
id---------id_papel---------aplicacion-------------id_cotizacion----peso_calibre
2---------145----------------uno papel------------12----------------- 68grs/
3---------145----------------dos papel------------12------------------200grs/

papeles
id_papel------id_producto
145------------Bond
146------------Couche Brillante

y quiero que me arroje

bond uno papel 12 68grs/ 12*15 forros
bond dos papel 12 200grs/ 15X41 interiores


mi sentencia es algo asi pero no me sale
SELECT
papeles.id_papel,
papeles.descripcion,
papel_cotizado.aplicacion,
papel_cotizado.id_cotizacion,
papel_cotizado.peso_calibre
FROM
papeles
INNER JOIN papel_cotizado ON papel_cotizado.id_papel = papeles.id_papel


pero me falta hacer el join con la tabla de tamanios_cotizaods
  #2 (permalink)  
Antiguo 09/04/2012, 13:12
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Problema con consulta iiner join

Hola mega0079:

Qué criterio es el que utilizas para unir tus tablas papel y/o papel_cotizado con tu tabla tamanios_cotizados?... es decir, para unir las primeras tablas utilizas el campo id_papel, pero para unir la tabla tamanios_cotizados qué campo(s) debes considerar.

A primera vista podría pensar en usar el campo id_cotización, sin embargo, este campo NO ES CAMPO UNICO o campo llave... en la tabla tamanios_cotizados hay dos registros con el valor id_cotizacion = 12. De la misma manera, en tu tabla papeles_cotizados hay dos registros con el campo id_cotizacion = 12. Si se utilizara este campo para unir las tablas tendrías algo como esto:

Código MySQL:
Ver original
  1. mysql> SELECT * FROM tamanios_cotizados;
  2. +------+---------------+-----------+---------+------------+
  3. | id   | id_cotizacion | tam_final | tam_ext | aplicacion |
  4. +------+---------------+-----------+---------+------------+
  5. |   28 |            12 | 12X15     | 15X52   | forros     |
  6. |   29 |            12 | 15X41     | 15X85   | interiores |
  7. +------+---------------+-----------+---------+------------+
  8. 2 rows in set (0.07 sec)
  9.  
  10. mysql> SELECT * FROM papel_cotizado;
  11. +------+----------+------------+---------------+--------------+
  12. | id   | id_papel | aplicacion | id_cotizacion | peso_calibre |
  13. +------+----------+------------+---------------+--------------+
  14. |    2 |      145 | uno papel  |            12 | 68grs/       |
  15. |    3 |      145 | dos papel  |            12 | 200grs/      |
  16. +------+----------+------------+---------------+--------------+
  17. 2 rows in set (0.00 sec)
  18.  
  19. mysql> SELECT * FROM papeles;
  20. +----------+------------------+
  21. | id_papel | descripcion      |
  22. +----------+------------------+
  23. |      145 | Bond             |
  24. |      146 | Couche Brillante |
  25. +----------+------------------+
  26. 2 rows in set (0.00 sec)
  27.  
  28. mysql> SELECT
  29.     -> papeles.id_papel,
  30.     -> papeles.descripcion,
  31.     -> papel_cotizado.aplicacion,
  32.     -> papel_cotizado.id_cotizacion,
  33.     -> papel_cotizado.peso_calibre,
  34.     -> tamanios_cotizados.tam_final
  35.     -> FROM
  36.     -> papeles
  37.     -> INNER JOIN papel_cotizado ON papel_cotizado.id_papel = papeles.id_papel
  38.     -> INNER JOIN tamanios_cotizados ON
  39.     -> papel_cotizado.id_cotizacion =  tamanios_cotizados.id_cotizacion;
  40. +----------+-------------+------------+---------------+--------------+-----------+
  41. | id_papel | descripcion | aplicacion | id_cotizacion | peso_calibre | tam_final |
  42. +----------+-------------+------------+---------------+--------------+-----------+
  43. |      145 | Bond        | uno papel  |            12 | 68grs/       | 12X15 |
  44. |      145 | Bond        | dos papel  |            12 | 200grs/      | 12X15 |
  45. |      145 | Bond        | uno papel  |            12 | 68grs/       | 15X41 |
  46. |      145 | Bond        | dos papel  |            12 | 200grs/      | 15X41 |
  47. +----------+-------------+------------+---------------+--------------+-----------+
  48. 4 rows in set (0.00 sec)


Es decir, se estaría realizando un producto cartesiano entre tus tablas. Verifica entonces si hay algún otro campo para relacionar esta tablas.

Saludos
Leo.

Etiquetas: join, select, tabla
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 15:33.