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

Consulta MYSQL

Estas en el tema de Consulta MYSQL en el foro de Mysql en Foros del Web. Buenos días como están, quisiera que me ayudaran con la siguiente duda... estoy haciendo una bd de prueba, para salida de productos, y tengo la ...
  #1 (permalink)  
Antiguo 25/07/2014, 08:00
 
Fecha de Ingreso: noviembre-2011
Mensajes: 44
Antigüedad: 12 años, 5 meses
Puntos: 0
Exclamación Consulta MYSQL

Buenos días como están, quisiera que me ayudaran con la siguiente duda...

estoy haciendo una bd de prueba, para salida de productos, y tengo la siguiente duda, aqui el codigo para que me puedan ayudar

el codigo va en esta url

https://dl.dropboxusercontent.com/u/.../bd_prueba.txt


Resulta que esta consulta

Código MySQL:
Ver original
  1. SELECT output_order.*,product.*
  2. FROM output_order,output_order_detail,product
  3. WHERE output_order_detail.product_id=product.product_id
  4. AND output_order_detail.output_order_id=output_order.output_order_id
  5. AND output_order_detail.output_order_id=1

muestra todo lo que salio de la orden 1 y esta bien

order product_id product_name ect
1 1J-9671 ..... ...
2 IMOPROMPRO43431 ....... .........



pero al hacer esta otra consulta.... un poco mas larga, que busca mostrar los equipos relacionados al producto q como tipo corresponde a "repuesto"


muestra el elemento "fleet_vehicle_mode_name" repetido el producto y repuesto, en repuesto esta bien,, porque esta relacionada la info, pero en producto no deberia aparecer nad, porq no tiene informacion relacionada

Código MySQL:
Ver original
  1. SELECT output_order.*,product.product_name,product.product_id,fleet_vehicle_mode.fleet_vehicle_mode_name
  2. FROM output_order,product,output_order_detail,components_for_product_detail  JOIN fleet_vehicle_mode
  3. ON components_for_product_detail.fleet_vehicle_mode_id=fleet_vehicle_mode.fleet_vehicle_mode_id
  4. WHERE output_order_detail.product_id=product.product_id
  5. AND output_order_detail.output_order_id=output_order.output_order_id
  6. AND output_order_detail.output_order_id=1

aparece asi


order product_id product_name fleet_vehicle_mode_name
1 1J-9671 ..... ... en modelo me aparece bien
2 IMOPROMPRO43431 ....... ......... pero en producto deberia aparecer null o un -

a eso quiero llegar con una consulta bien desarrollada, alguien lo ha hecho de esta forma??, espero se entienda saludos, muchas gracias

Última edición por gnzsoloyo; 25/07/2014 a las 09:05 Razón: Codigo mal etiquetado.
  #2 (permalink)  
Antiguo 25/07/2014, 09:07
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Consulta MYSQL

La query que estás ejecutando contiene JOINs implícitos (comas), y las condiciones puestas lo transforman en un virtual INNER JOIN. En ese contexto es imposible que salgan campos nulos en los campos relacionados.
Sólo podrán salir nulos aquellos campos de los registros que efectivamente contengan NULL. De lo contrario, la query es correcta.
Si lo que deseas es hacer un LEFT JOIN no puedes usar implícitos. Debe ser explícito.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 25/07/2014, 09:28
 
Fecha de Ingreso: noviembre-2011
Mensajes: 44
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: Consulta MYSQL

entonces como tendria que aplicar la consulta para que genere el tipo de información que necesito?? saludos gracias por responder
  #4 (permalink)  
Antiguo 25/07/2014, 09:46
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
La query en si, sería mas o menos:
Código MySQL:
Ver original
  1. mysql> SELECT
  2.     ->     P.product_id,
  3.     ->     P.product_name,
  4.     ->     IFNULL(OO.output_order_id, '-') output_order_id,
  5.     ->     IFNULL(OO.output_order_stat, '.') output_order_stat,
  6.     ->     IFNULL(OD.quantity, 0) quantity
  7.     -> FROM
  8.     ->     product P
  9.     ->         LEFT JOIN
  10.     ->     output_order_detail OD ON p.product_id = OD.product_id
  11.     ->         LEFT JOIN
  12.     ->     output_order OO ON OD.output_order_id = OO.output_order_id
  13.     -> WHERE
  14.     ->      OD.output_order_id = 1
  15.     ->     OR OD.product_id IS NULL;
  16. +-----------------+------------------------------+-----------------+-------------------+----------+
  17. | product_id      | product_name                 | output_order_id | output_order_stat | quantity |
  18. +-----------------+------------------------------+-----------------+-------------------+----------+
  19. | 158-1127        | Cabezal - Unidad de Rotacion | -               | .                 |        0 |
  20. | 170-0494        | Elbow                        | -               | .                 |        0 |
  21. | 1J-9671         | O-Ring                       | 1               | Guardado          |        1 |
  22. | IMOPROMPRO43431 | Dell Inspiron i5 4gb ram     | 1               | Guardado          |        1 |
  23. | IMOPROMPRO43432 | Dell Inspiron i7 4gb ram     | -               | .                 |        0 |
  24. | IMOPROMPRO43433 | Dell Vostro i7 4gb ram       | -               | .                 |        0 |
  25. +-----------------+------------------------------+-----------------+-------------------+----------+
  26. 6 rows in set (0.07 sec)
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 25/07/2014 a las 09:54
  #5 (permalink)  
Antiguo 25/07/2014, 12:32
 
Fecha de Ingreso: noviembre-2011
Mensajes: 44
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: Consulta MYSQL

Oka muchas Gracias, voy a revisar....
  #6 (permalink)  
Antiguo 25/07/2014, 14:36
 
Fecha de Ingreso: noviembre-2011
Mensajes: 44
Antigüedad: 12 años, 5 meses
Puntos: 0
Exclamación Respuesta: Consulta MYSQL

Hola de nuevo, estaba revisando la consulta, pero no se encuentra unida las tablas

components_for_product_detail y fleet_vehicle_mode_id, lo he probado pero nada, no se si puedes ayudarme con eso. he probado de varias formas pero no he conseguido resultados satisfactorios....


no es necesarios null, hacia referencia a q no existieran como datos vacios, etc o sacarlo de alguna forma,


saludos

Etiquetas: join, select
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 17:59.