3 millones en foros del web

Registrarte Políticas Wiki 120segs Ayuda Iniciar sesion

Avisos

Retroceder   Foros del Web > Programación para sitios web > PHP
Respuesta
 
Herramientas Desplegado
Antiguo 02-jul-2009, 14:25   #1 (permalink)
aldo1982 (Reg: noviembre-2004)
 
1.333 Mensajes
Ubicación: Santa Fe (Argentina) Colon F.C
aldo1982 está desconectado
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
  Responder Citando
Antiguo 02-jul-2009, 14:37   #2 (permalink)
</Moderador>
David (Reg: abril-2005)
 
13.054 Mensajes
Ubicación: In this planet
David está desconectado
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 originalCopiar
  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.
  Responder Citando
Antiguo 02-jul-2009, 14:39   #3 (permalink)
Ronin46 (Reg: junio-2009)
 
331 Mensajes
Ronin46 está desconectado
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.
  Responder Citando
Antiguo 02-jul-2009, 15:15   #4 (permalink)
aldo1982 (Reg: noviembre-2004)
 
1.333 Mensajes
Ubicación: Santa Fe (Argentina) Colon F.C
aldo1982 está desconectado
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 originalCopiar
  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
  Responder Citando
Antiguo 02-jul-2009, 15:16   #5 (permalink)
aldo1982 (Reg: noviembre-2004)
 
1.333 Mensajes
Ubicación: Santa Fe (Argentina) Colon F.C
aldo1982 está desconectado
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
  Responder Citando
Antiguo 02-jul-2009, 15:17   #6 (permalink)
</Moderador>
David (Reg: abril-2005)
 
13.054 Mensajes
Ubicación: In this planet
David está desconectado
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.
  Responder Citando
Antiguo 02-jul-2009, 16:50   #7 (permalink)
aldo1982 (Reg: noviembre-2004)
 
1.333 Mensajes
Ubicación: Santa Fe (Argentina) Colon F.C
aldo1982 está desconectado
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
  Responder Citando
Antiguo 02-jul-2009, 17:12   #8 (permalink)
Ronin46 (Reg: junio-2009)
 
331 Mensajes
Ronin46 está desconectado
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.
  Responder Citando
Antiguo 02-jul-2009, 17:31   #9 (permalink)
aldo1982 (Reg: noviembre-2004)
 
1.333 Mensajes
Ubicación: Santa Fe (Argentina) Colon F.C
aldo1982 está desconectado
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
  Responder Citando
Antiguo 02-jul-2009, 17:40   #10 (permalink)
Ronin46 (Reg: junio-2009)
 
331 Mensajes
Ronin46 está desconectado
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
  Responder Citando
Respuesta
No hay votos aún.
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.

Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code está Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado
Trackbacks está Desactivado
Pingbacks está Desactivado
Refbacks está Desactivado



La zona horaria es GMT -6. Ahora son las 09:19.
Políticas de Uso de Foros del Web


Message Board Statistics

SEO by vBSEO 3.3.2

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104