Comunidad de diseño web y desarrollo en internet online

Suma acumulada en un query MySQL

Citar            
MensajeEscrito el 19 Ago 2008 06:09 pm
¿Es posible traer con un query un campo para la suma acumulada de los registros anteriores(Sum Acu)?

Algo asi:
No. Cliente | No. Cta | Fecha | Sum.Acu | Periodos Acreditados
T08-0001 | TUFAQ-080001 | 2008-07-18 11:05:52 | 1 | 1
T08-0001 | TUFAQ-080001 | 2008-07-18 11:06:07 | 5 | 4
T08-0001 | TUFAQ-080001 | 2008-08-19 09:59:51 | 15 | 10
T08-0001 | TUFAQ-080001 | 2008-08-19 09:59:56 | 115 | 100
T08-0001 | TUFAQ-080001 | 2008-08-19 10:01:43 | 116 | 1
T08-0001 | TUFAQ-080001 | 2008-08-19 10:08:46 | 117 | 1

Por Jorgelig

Claber

3035 de clabLevel

12 tutoriales

 

Monterrey, Nuevo Leon, MX

firefox
Citar            
MensajeEscrito el 19 Ago 2008 08:40 pm
Si se puede, es sencillo:

Código :

SET @algo = 0;

SELECT 
@algo:=TuCampo + @algo,
`productos`.*
FROM `productos`


El resultado de la primer columna ira desplegando la sumatoria.

Por Dano

BOFH

4273 de clabLevel

14 tutoriales
4 articulos
10 ejemplos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Lugar estratégico para vigilarte

firefox
Citar            
MensajeEscrito el 20 Ago 2008 05:35 am
gracias Dano, eso no puedo meterlo en un solo query? me sale este error:

Código :

There are more than one commands on this line. 
Note that only the first complete command is executed.

Por Jorgelig

Claber

3035 de clabLevel

12 tutoriales

 

Monterrey, Nuevo Leon, MX

firefox
Citar            
MensajeEscrito el 20 Ago 2008 02:20 pm

jorgelig escribió:

gracias Dano, eso no puedo meterlo en un solo query? me sale este error:

Código :

There are more than one commands on this line. 
Note that only the first complete command is executed.


No, creo que no se puede en el mismo query inicializar la variable. Tienen que ser dos queries jorgelig.

Es raro el error. Como estas corriendo el query? muestrame y mejor te enseño a correr dos queries.

Saludos

Por Dano

BOFH

4273 de clabLevel

14 tutoriales
4 articulos
10 ejemplos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Lugar estratégico para vigilarte

firefox
Citar            
MensajeEscrito el 20 Ago 2008 02:31 pm

Dano escribió:

jorgelig escribió:

gracias Dano, eso no puedo meterlo en un solo query? me sale este error:

Código :

There are more than one commands on this line. 
Note that only the first complete command is executed.


No, creo que no se puede en el mismo query inicializar la variable. Tienen que ser dos queries jorgelig.

Es raro el error. Como estas corriendo el query? muestrame y mejor te enseño a correr dos queries.

Saludos


¿Has realizado querys de más de una sentencia Dano?. Porque yo no, me marca errores del estilo que plantea Jorgelig, lo he probado también en Conexión tipo WebOrb en Flex y no funciona.

Por Darel

725 de clabLevel

5 tutoriales

 

I'm a human

firefox
Citar            
MensajeEscrito el 20 Ago 2008 02:40 pm
Estoy intentando esto en el MySQL Browser:

Código :

SET @algo = 0;
 SELECT
 @algo:=depositos.monto + @algo,
 `depositos`.*
 FROM `depositos`;

Pero solo me ejecuta una linea por consulta, por lo que si ejecuto la primera no hace nada, si ejecuto la segunda en la columna aparece null. Imagino que esto deberia ir en un Function o Procedure, pero no se como una funcion o procedure regrese varios registros como resultado.

Lo que pasa esque desde la aplicacion ejecuto el query y el resultado de la consulta lo guardo en un DataSet para posteriormente desde alli vaciarlo a un gridview directamente.

Por Jorgelig

Claber

3035 de clabLevel

12 tutoriales

 

Monterrey, Nuevo Leon, MX

firefox
Citar            
MensajeEscrito el 20 Ago 2008 02:58 pm
Solucionado Dano, gracias por el empujo. Termine siguiendo el codigo que me comentaste, pero lo meti en un StoredProcedure:

Código :

DELIMITER $$

DROP PROCEDURE IF EXISTS `bdutandas`.`Prueba` $$
CREATE PROCEDURE `bdutandas`.`Prueba` ()
BEGIN
SET @algo = 0;
SELECT
 (@algo:=depositos.monto + @algo) As Sumatoria,
 `depositos`.*
 FROM `depositos`;
END $$

DELIMITER ;

Asi que solo es cosa de hacer

Código :

Call Prueba();
para que traiga una consulta como cualquier otra :D

Por Jorgelig

Claber

3035 de clabLevel

12 tutoriales

 

Monterrey, Nuevo Leon, MX

firefox
Citar            
MensajeEscrito el 20 Ago 2008 02:59 pm
*empujon..... pensaba que solo en charla no se podian modificar los mensajes ¬¬

Por Jorgelig

Claber

3035 de clabLevel

12 tutoriales

 

Monterrey, Nuevo Leon, MX

firefox
Citar            
MensajeEscrito el 20 Ago 2008 03:20 pm
jorgelig iba a recomendarte también lo del store procedure, excelente que lo hagas así. Por cierto yo uso navicat, es mejor en algunas cosas que el mysql browser. Por ejemplo en el navicat ese query que te pase, la ventana para queries lo corre sin errores.

Darel, no se puede ejecutar, así como directamente dos sentencias, tienes que ejecutar cada sentencia con su propio mysql_query, pero hazlo sin cerrar la conexión. Con eso es equivalente a ejecutar las dos sentencias juntas.


Saludos

Por Dano

BOFH

4273 de clabLevel

14 tutoriales
4 articulos
10 ejemplos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos



Ultima edición por Dano el 20 Ago 2008 06:49 pm, editado 1 vez

Lugar estratégico para vigilarte

firefox
Citar            
MensajeEscrito el 20 Ago 2008 03:32 pm

Dano escribió:

...pero hazlo sin cerrar la conexión. Con eso es equivalente a ejecutar las dos sentencias juntas.

Eso es un buen dato Dano, ahora habrá que modificar mi clase de conexión a base de datos, ya que cada vez que ejecuto una consulta cierro la conexión, ya vez que eso uno lo aprende en la escuela de seguridad de PHP.

Por Darel

725 de clabLevel

5 tutoriales

 

I'm a human

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.