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

[SOLUCIONADO] Exportar excel en una sola fila para varios productos

Estas en el tema de Exportar excel en una sola fila para varios productos en el foro de Mysql en Foros del Web. Hola Amigos Estoy haciendo un reporte en excel y muestro los siguientes campos(los mas principales). Los campos del excel lo traigo de una consulta mysql, ...
  #1 (permalink)  
Antiguo 08/02/2015, 16:04
 
Fecha de Ingreso: febrero-2015
Ubicación: Lima - Peru
Mensajes: 5
Antigüedad: 9 años, 2 meses
Puntos: 0
Exportar excel en una sola fila para varios productos

Hola Amigos


Estoy haciendo un reporte en excel y muestro los siguientes campos(los mas principales). Los campos del excel lo traigo de una consulta mysql, el excel me muestra el numero de pedido y todos los productos que pertenecen a ese pedido con su descripcion.

Primer Reporte
| nro de pedido-|codigo de producto-|descripcion--------------|
| PE-001----------|ATL-0001-------------|Televisor LCD
| PE-001----------|ATP-0002-------------|Telivisor Plasma
| PE-002----------|ALC-0002-------------|Lavadora Blanca
| PE-003----------|USB--------------------|Memoria USB 1 GB
| PE-003----------|USB--------------------|Memoria USB 2 GB
| PE-003----------|n cantidad usb's-----| . . . .
| PE-003----------|USB--------------------|Memoria USB 8 GB
| PE-003----------|USB--------------------|Memoria USB 16 GB
| PE-004----------|ARB-0001-------------|Refrigeradora Blanca


Lo que quiero hacer es presentarlo de la siguiente manera.

Reporte Deseado
| nro de pedido--|codigo de producto-|descripcion |
| PE-001----------|ATL-0001-------------|Televisor LCD
| PE-001----------|ATP-0002-------------|Telivisor Plasma
| PE-002----------|ALC-0002-------------|Lavadora Blanca
| PE-003----------|USB--------------------|Generico
| PE-004----------|ARB-0001-------------|Refrigeradora Blanca

En este caso cuando el pedido tiene un solo producto del mismo tipo, como el caso del pedido 3 (PE-003) que solo contiene USBs de diferentes capacidades, busco que solo se imprima una sola vez en una sola fila y el campo descripcion muestre "Generico".

la query que tengo solo me resuelve el campo descripcion, pero me exporta aun como el primer reporte. muestro el codigo de la consulta msyql:

Código MySQL:
Ver original
  1. SELECT  pe.nro_pedido as nro, pr.codigo_producto as codigo,
  2. IF(CHARACTER_LENGTH(pr.codigo_producto) <= 3, 'Generico',pr.Descripcion ) as descripcion,
  3. FROM pedidos pe
  4. INNER JOIN productodetalle pr ON pr.nro_pedido=pe.nro_pedido
  5. INNER JOIN productos pro.codigo_producto=pr.codigo_producto

Me pueden dar algunas ideas de como resolverlo y presentarlo como menciono, si lo puedo hacer mediante mysql o con ayuda de codigo php.

Gracias por la ayuda a todos.

Última edición por gnzsoloyo; 08/02/2015 a las 16:30
  #2 (permalink)  
Antiguo 09/02/2015, 09:45
Avatar de David_Carrera_G  
Fecha de Ingreso: noviembre-2014
Ubicación: Santiago
Mensajes: 37
Antigüedad: 9 años, 5 meses
Puntos: 1
Respuesta: Exportar excel en una sola fila para varios productos

Hola wilmer_hardy a ver si entiendo, lo que quieres hacer es que si encuentras un producto de la misma categoría pero con diferente características los agrupe y muestre como característica "Genérico"???
__________________
David Carrera González
Santiago de Chile
Analista de base de datos
  #3 (permalink)  
Antiguo 09/02/2015, 10:49
 
Fecha de Ingreso: febrero-2015
Ubicación: Lima - Peru
Mensajes: 5
Antigüedad: 9 años, 2 meses
Puntos: 0
Respuesta: Exportar excel en una sola fila para varios productos

Gracias David_Carrera_G

Asi es, si el producto es de una sola categoria, se agrupa y la descripcion sera "Generico". Ya que si al pedido se agrega un producto de la misma categoria solo se guarda los 3 primeros digitos.

Actualmente a la consulta MySQL le agregue GROUP BY a la columna codigo de producto y ordene la columna nro de pedido con ORDER BY, entonces la consulta queda asi.


Código MySQL:
Ver original
  1. SELECT  pe.nro_pedido as nro, pr.codigo_producto as codigo,
  2. IF(CHARACTER_LENGTH(pr.codigo_producto) <= 3, 'Generico',pr.Descripcion ) as descripcion,
  3. FROM pedidos pe
  4. INNER JOIN productodetalle pr ON pr.nro_pedido=pe.nro_pedido
  5. INNER JOIN productos pro.codigo_producto=pr.codigo_producto
  6. GROUP BY pr.codigo_producto
  7. ORDER BY pe.nro_pedido

aparentemente funciona bien, porque me da el resultado del Reporte Deseado, pero estoy creando otro pedido (PE-0005) y agregando el mismo producto que es USB, pero no visualizo este pedido (PE-0005) cuando ejecuto la consulta MySQL y mucho menos aparece en el excel que exporto.

Última edición por wilmer_hardy; 09/02/2015 a las 10:55
  #4 (permalink)  
Antiguo 09/02/2015, 11:06
 
Fecha de Ingreso: febrero-2015
Ubicación: Lima - Peru
Mensajes: 5
Antigüedad: 9 años, 2 meses
Puntos: 0
Respuesta: Exportar excel en una sola fila para varios productos

La consulta quedo funcionando bien, y ya puedo ver el ultimo pedido creado, agregue la columna pe.nro_pedido al GROUP BY.

Código MySQL:
Ver original
  1. SELECT  pe.nro_pedido as nro, pr.codigo_producto as codigo,
  2. IF(CHARACTER_LENGTH(pr.codigo_producto) <= 3, 'Generico',pr.Descripcion ) as descripcion,
  3. FROM pedidos pe
  4. INNER JOIN productodetalle pr ON pr.nro_pedido=pe.nro_pedido
  5. INNER JOIN productos pro.codigo_producto=pr.codigo_producto
  6. GROUP BY pe.nro_pedido,pr.codigo_producto
  7. ORDER BY pe.nro_pedido

Gracias David_Carrera_G

Última edición por wilmer_hardy; 09/02/2015 a las 11:29

Etiquetas: bases-de-datos-general, campos, excel, fila, php, productos
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 19:27.