Foros del Web » Programando para Internet » PHP »

Consulta php+mysql

Estas en el tema de Consulta php+mysql en el foro de PHP en Foros del Web. buenas tengo esta tabla tabla_compras( id, nro_compra, detalle, importe ) ejemplo de datos Cita: id nro_compra detalle importe 1 1111 detalle 20 2 1111 detalle ...
  #1 (permalink)  
Antiguo 02/07/2009, 13:25
Avatar de aldo1982  
Fecha de Ingreso: noviembre-2004
Ubicación: Santa Fe (Argentina) Colon F.C
Mensajes: 1.362
Antigüedad: 19 años, 4 meses
Puntos: 6
Consulta php+mysql

buenas tengo esta tabla

tabla_compras(
id,
nro_compra,
detalle,
importe
)

ejemplo de datos

Cita:
id nro_compra detalle importe
1 1111 detalle 20
2 1111 detalle 45
3 1111 detalle 25
4 2222 detalle 125
5 2222 detalle 20
6 3333 detalle 33
7 3333 detalle 399
8 3333 detalle 33
lo que necesito es la siguiente consulta




Cita:
id nro_compra detalle importe
1 1111 detalle 20
2 1111 detalle 45
3 1111 detalle 25
subtotal 90
4 2222 detalle 125
5 2222 detalle 20
subtotal 125
6 3333 detalle 33
7 3333 detalle 399
8 3333 detalle 33
subtotal 432
__________________
LA MUERTE ESTÁ TAN SEGURA DE VENCER QUE NOS DA TODA UNA VIDA DE VENTAJA
  #2 (permalink)  
Antiguo 02/07/2009, 13:37
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Consulta php+mysql

Ya te había respondido cómo hacerlo en tu otro tema .

La lógica es simple:
Código php:
Ver original
  1. realizar_consulta();
  2. $nro_compra = '';
  3. $subtotal = 0;
  4. while (/* Obtener datos */) {
  5.     if ($nro_compra != $fila['nro_compra']) {
  6.         if ($subtotal > 0) {
  7.             echo 'subtotal: ' . $subtotal;
  8.             $subtotal = 0;
  9.         }
  10.         $nro_compra = $fila['nro_compra'];
  11.     }
  12.     $subtotal += $fila['importe'];
  13.     imprimir_fila();
  14. }
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 02/07/2009, 13:39
Avatar de Ronin46  
Fecha de Ingreso: junio-2009
Mensajes: 398
Antigüedad: 14 años, 9 meses
Puntos: 8
Respuesta: Consulta php+mysql

Con la cláusula group by de Mysql

Te pongo la sentencia en lenguaje humano
Selecciona suma de precio de la tabla compras group by id

EDITO: Arghh, se me adelantaron, lo de arriba quizás es mejor, porque te da la lista de productos y vas intercalando el subtotal. Lo que yo te pongo sólo te da el subtotal.
  #4 (permalink)  
Antiguo 02/07/2009, 14:15
Avatar de aldo1982  
Fecha de Ingreso: noviembre-2004
Ubicación: Santa Fe (Argentina) Colon F.C
Mensajes: 1.362
Antigüedad: 19 años, 4 meses
Puntos: 6
Respuesta: Consulta php+mysql

Cita:
Iniciado por David Ver Mensaje
Ya te había respondido cómo hacerlo en tu otro tema .

La lógica es simple:
Código php:
Ver original
  1. realizar_consulta();
  2. $nro_compra = '';
  3. $subtotal = 0;
  4. while (/* Obtener datos */) {
  5.     if ($nro_compra != $fila['nro_compra']) {
  6.         if ($subtotal > 0) {
  7.             echo 'subtotal: ' . $subtotal;
  8.             $subtotal = 0;
  9.         }
  10.         $nro_compra = $fila['nro_compra'];
  11.     }
  12.     $subtotal += $fila['importe'];
  13.     imprimir_fila();
  14. }

hola neuvamente david..mcuahs gracias. anda bien.. pero el ultimo subtotal no lo muestra :(
__________________
LA MUERTE ESTÁ TAN SEGURA DE VENCER QUE NOS DA TODA UNA VIDA DE VENTAJA
  #5 (permalink)  
Antiguo 02/07/2009, 14:16
Avatar de aldo1982  
Fecha de Ingreso: noviembre-2004
Ubicación: Santa Fe (Argentina) Colon F.C
Mensajes: 1.362
Antigüedad: 19 años, 4 meses
Puntos: 6
De acuerdo Respuesta: Consulta php+mysql

Cita:
Iniciado por Ronin46 Ver Mensaje
Con la cláusula group by de Mysql

Te pongo la sentencia en lenguaje humano
Selecciona suma de precio de la tabla compras group by id

EDITO: Arghh, se me adelantaron, lo de arriba quizás es mejor, porque te da la lista de productos y vas intercalando el subtotal. Lo que yo te pongo sólo te da el subtotal.
buenas, podrias poner tu forma para ver la logica que usa y asi poder tener otra alternativa ?

gracias de ante mano
__________________
LA MUERTE ESTÁ TAN SEGURA DE VENCER QUE NOS DA TODA UNA VIDA DE VENTAJA
  #6 (permalink)  
Antiguo 02/07/2009, 14:17
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Consulta php+mysql

Puedes imprimir el último subtotal después del bloque while()
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #7 (permalink)  
Antiguo 02/07/2009, 15:50
Avatar de aldo1982  
Fecha de Ingreso: noviembre-2004
Ubicación: Santa Fe (Argentina) Colon F.C
Mensajes: 1.362
Antigüedad: 19 años, 4 meses
Puntos: 6
De acuerdo Respuesta: Consulta php+mysql

Cita:
Iniciado por David Ver Mensaje
Puedes imprimir el último subtotal después del bloque while()
bien andubo perfecto, mil gracias, pero te pregunto ya que estamos en el baile je ^^

alguan forma para automatizar para no repetir el codigo alinicio cuando comienza el while y uando termina el while .. me explico ?
__________________
LA MUERTE ESTÁ TAN SEGURA DE VENCER QUE NOS DA TODA UNA VIDA DE VENTAJA
  #8 (permalink)  
Antiguo 02/07/2009, 16:12
Avatar de Ronin46  
Fecha de Ingreso: junio-2009
Mensajes: 398
Antigüedad: 14 años, 9 meses
Puntos: 8
Respuesta: Consulta php+mysql

SELECT `nro_compra` , sum( `importe` )
FROM `tabla_compras`
GROUP BY `nro_compra`

Te devuelve:

nro_compra sum(`importe`)
1111 110
2222 145
3333 465

Esto esta bien si quieres poner los subtotales sólos, que por tu primer post creo que no es el caso.

Aunque si te quieres liar, puedes combinar esta sentencia, con la sentencia en la que obtienes los productos e ir intercalando cada vez que cambie de nro_compra, es decir, empiezas a mostrar los resultados de nro_compra = 1111, cuando llegues al 2222 metes previamente el subtotal 1111 que calculaste con esta sentencia y así con cada nro_compra (estarías en un bucle).

Pero vamos, lo de David está mucho mejor y es más simple.
  #9 (permalink)  
Antiguo 02/07/2009, 16:31
Avatar de aldo1982  
Fecha de Ingreso: noviembre-2004
Ubicación: Santa Fe (Argentina) Colon F.C
Mensajes: 1.362
Antigüedad: 19 años, 4 meses
Puntos: 6
Respuesta: Consulta php+mysql

Cita:
Iniciado por Ronin46 Ver Mensaje
SELECT `nro_compra` , sum( `importe` )
FROM `tabla_compras`
GROUP BY `nro_compra`

Te devuelve:

nro_compra sum(`importe`)
1111 110
2222 145
3333 465

Esto esta bien si quieres poner los subtotales sólos, que por tu primer post creo que no es el caso.

Aunque si te quieres liar, puedes combinar esta sentencia, con la sentencia en la que obtienes los productos e ir intercalando cada vez que cambie de nro_compra, es decir, empiezas a mostrar los resultados de nro_compra = 1111, cuando llegues al 2222 metes previamente el subtotal 1111 que calculaste con esta sentencia y así con cada nro_compra (estarías en un bucle).

Pero vamos, lo de David está mucho mejor y es más simple.
bien a eso me referia, yo lo tenia hecho como lo estas poniendo vos, pero de esa manera me obliga a hacer una consulta sql dentro de orta consulta la cual recorro los registros con un while... entocnes al tener tantos registros es realmente lentisima la consulta, demora minutos y minutos hastaa traer lso resultados.

por eso de la forma que puso David anda mucho mejor :)

salu2 y gracias a Ambos
__________________
LA MUERTE ESTÁ TAN SEGURA DE VENCER QUE NOS DA TODA UNA VIDA DE VENTAJA
  #10 (permalink)  
Antiguo 02/07/2009, 16:40
Avatar de Ronin46  
Fecha de Ingreso: junio-2009
Mensajes: 398
Antigüedad: 14 años, 9 meses
Puntos: 8
Respuesta: Consulta php+mysql

Estuve mirando un poco más, porque recuerdo vagamente que se podía hacer todo con una consulta MySql pero no doy encontrado nada. Pero me encontré con esto que igual te vale para tener otra forma de verlo:

lists.mysql.com/mysql/192065
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 02:08.