PDA

Ver la Versión Completa : Variables MySQL en Zeos


Tecnofacil
08-06-2016, 22:05:02
Hola amigos. Tengo la siguiente consulta en MySQL

Set @Sumatoria = 0;
SELECT
detalle_liquidaciones_cta.pu,
detalle_liquidaciones_cta.cantidad,
detalle_liquidaciones_cta.debe,
detalle_liquidaciones_cta.haber,
(@Sumatoria:= @Sumatoria + detalle_liquidaciones_cta.debe + detalle_liquidaciones_cta.haber) as Incremental
FROM
detalle_liquidaciones_cta
where idliquidacion=200


Funciona perfecto en Navicat y Mysql Workbench pero al pasar la consulta a Zeos me tira error.


SQL Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server for the right syntax to use near
'SELECT
detalle_liquidaciones_cta.pu,
detalle_liquidaciones_cta.cantidad,
deta' at line 2


ParamCheck esta en False.

bitbow
09-06-2016, 00:14:26
Hola, no se como estas armando tu sentencia SQL, descnozco si es alguna sintaxis definidia para una version especifica de MySQL, segun yo deberia de quedar asi, a menos que estes intentando realizar algo diferente.
SELECT pu, cantidad, debe, haber, (debe + haber) as Incremental FROM detalle_liquidaciones_cta where idliquidacion=200;

-- Si tienes una consolta de una sola tabla no es necesario que pongas de qye tabla es cada campo,
-- igual si son varias tablas solo si el campo se repite en alguna otra es necesario definir de que
-- tabla viene.

Saludos.

roman
09-06-2016, 00:20:49
Posiblemente el problema se deba a que tienes, en realidad, dos sentencias, el set y el select. Normalmente, MySQL no aceptará sentencias múltiples, y es posible que Navicat y Workbench separen las sentencias y lancen una consulta por cada una.

Con Zeos tendrías que mandar cada consulta aparte, aunque creo recordar que tiene un componente que sirve para eso, TZQLProcessor o TZQLScript, o algo así.

LineComment Saludos

Tecnofacil
09-06-2016, 23:47:01
Creo que me falto expresar que hace la consulta.

Set @Sumatoria = 0; -- Creo una variable para ir cargando el resultado del calculo de cada registro.

Suponiendo que tengo una tabla con debe y haber, (Básicamente es eso esa tabla), lo que quiero es que se agregue una nueva columna llamada "Sumatoria" donde va mostrando el saldo de la cuenta hasta esa linea.


Debe Haber Saldo
$100 $0 $ 100
$0 $30 $ 70
$500 $0 $570

Se entiende?
En los visores SQL funciona de maravilla

bitbow
09-06-2016, 23:52:23
Una duda, estas corriendo esa sentencia como script o como consulta? Hay que recordar que son dos cosas distintas y por claras razones necesitan ser tratados de diferente forma dentro de la programación.

A simple vista es un script y dentro de un zquery se va a tratar como múltiples sentencias originando un error, lo que puedes hacer es meter esto en una función o procedimiento que te devuelva a modo de tabla (en sql server se puede así que supongo que aquí también).

Suerte.

bitbow
10-06-2016, 00:22:48
Efectivamente como comentas, la consulta tal cual la tienes al inicio si corre en el editor SQL y no es un script (para el caso de MySQL), realice algunas pruebas y con un script equivalente al crear una vista en MySQL truena por lo que revise como podria hacerse lo que necesitas, despues e algunas pruebas llegue a esto >>

SELECT t.id, t.valor,
(SELECT SUM(x.valor) FROM tabla1 x WHERE x.id <= t.id) AS cumulative_sum
FROM `tabla1` t ORDER BY t.id

Esta claro que tienes sus inconvenientes pero puedes partir de aqui.

Saludos.

roman
10-06-2016, 16:52:51
Creo que me falto expresar que hace la consulta.

Set @Sumatoria = 0; -- Creo una variable para ir cargando el resultado del calculo de cada registro.



No hacía falta. Se entendía desde un principio. Requieres ambas consultas, y las puedes hacer sin problema, pero tienes que hacerlas una después de la otra o usar el TZSQLProcessor. El valor que asignes a @Sumatoria se preservará en la segunda consulta siempre y cuando no cambies de conexión.

LineComment Saludos