incoherencia

From: Desarrollo Escuintla <desarrollo(dot)escuintla(at)gmail(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: incoherencia
Date: 2010-11-25 03:56:28
Message-ID: AANLkTimrxu4iW+Exu2_zT-F2pBfu2gRU+C-SQGdBAQMe@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola listeros!

En un servidor PostgreSQL version 8.4.2 en producción sobre Linux,
y la misma versión en Windows Xp para desarrollo, tengo la siguiente
consulta:

SELECT
tbl_07.tbl_07_asignacion,tbl_07.tbl_07_fecha,
tbl_01.tbl_01_codigo,tbl_01.tbl_01_nombre || ' ' ||
tbl_01.tbl_01_apellido AS NOMBRE,
tbl_03.tbl_03_pventa AS pventa,SUM(tbl_10.tbl_10_cant),
(tbl_03.tbl_03_pventa - SUM(tbl_10.tbl_10_cant)) AS suma
FROM tbl_10 RIGHT JOIN tbl_08
ON tbl_10.tbl_08_no=tbl_08.tbl_08_no
RIGHT JOIN tbl_07 ON
tbl_07.tbl_07_asignacion=tbl_08.tbl_07_asignacion
RIGHT JOIN tbl_03 ON
tbl_07.tbl_03_placa=tbl_03.tbl_03_placa
RIGHT JOIN tbl_01 ON
tbl_07.tbl_01_codigo=tbl_01.tbl_01_codigo
WHERE tbl_10.tbl_08_no
IN ( *//parentesi 1 que se abre*
SELECT tbl_08.tbl_08_no FROM tbl_08 WHERE
tbl_08.tbl_07_asignacion NOT IN
(SELECT tbl_07.tbl_07_asignacion FROM tbl_08 *//parentesis 2
que se abre*
LEFT JOIN tbl_07 ON
tbl_08.tbl_07_asignacion=tbl_07.tbl_07_asignacion
WHERE tbl_08.tbl_08_fecha>=date_mii(date(now()),1)) *//aca hay un
error, porque hay un parentesis que cierra*
AND NOT tbl_07.tbl_07_estado='PAGADO' *//el cual
deberia ir aca*
) *//parentesis 1 que se cierra*
GROUP BY tbl_03.tbl_03_pventa,tbl_07.tbl_07_asignacion,
tbl_07.tbl_07_fecha,NOMBRE,tbl_01.tbl_01_codigo;

pero resulta, que con el valor 1 en esta linea: date_mii(date(now()),1) si
funciona y
con los valores actuales en la BD me arroja 92 registros.

Pero como me funciono, y no me dio errores de sintaxis lo deje asi.

Ahora bien, esoy realizando unos cambios en la aplicación, pero instale la
versión 9.0.1 para desarrollo,
y alli es donde esta la incoherencia, al ejecutar la sentencia anterior no
me muestra ningun registro
y tampoco me dice que hay error.

Revisando, me doy cuenta que hay un error con respecto a los parentesis, por
lo cual la sentencia deberia quedar asi:

SELECT
tbl_07.tbl_07_asignacion,tbl_07.tbl_07_fecha,
tbl_01.tbl_01_codigo,tbl_01.tbl_01_nombre || ' ' ||
tbl_01.tbl_01_apellido AS NOMBRE,
tbl_03.tbl_03_pventa AS pventa,SUM(tbl_10.tbl_10_cant),
(tbl_03.tbl_03_pventa - SUM(tbl_10.tbl_10_cant)) AS suma
FROM tbl_10 RIGHT JOIN tbl_08
ON tbl_10.tbl_08_no=tbl_08.tbl_08_no
RIGHT JOIN tbl_07 ON
tbl_07.tbl_07_asignacion=tbl_08.tbl_07_asignacion
RIGHT JOIN tbl_03 ON
tbl_07.tbl_03_placa=tbl_03.tbl_03_placa
RIGHT JOIN tbl_01 ON
tbl_07.tbl_01_codigo=tbl_01.tbl_01_codigo
WHERE tbl_10.tbl_08_no
IN ( *//parentesis 1 que se abre*
SELECT tbl_08.tbl_08_no FROM tbl_08 WHERE
tbl_08.tbl_07_asignacion NOT IN
(SELECT tbl_07.tbl_07_asignacion FROM tbl_08 *//parentesis 2 que se
abre*
LEFT JOIN tbl_07 ON
tbl_08.tbl_07_asignacion=tbl_07.tbl_07_asignacion
WHERE tbl_08.tbl_08_fecha>=date_mii(date(now()),1) *//aca solo va un
parentesis que cierra*
AND NOT tbl_07.tbl_07_estado='PAGADO'

)
*//parentesis
2 que se cierra*
) *//parentesis 1 que se cierra*
GROUP BY tbl_03.tbl_03_pventa,tbl_07.tbl_07_asignacion,
tbl_07.tbl_07_fecha,NOMBRE,tbl_01.tbl_01_codigo;

Ahora como resultado de esta correción, en la versión 9.0.1 ahora si me
muestra registros,
y probando con la versión 8.4.2 me muestra 106 registros, y con la sentencia
anterior
que contiene el error me muestra 92

En donde esta el truco?? por decirlo asi

--
Saludos

_________________
José de Paz
Escuintla, Guatemala
Tel. (502)-56041676

http://desarrolloescuintla.wordpress.com

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Espartano 2010-11-25 05:03:28 Re: Problema con log de postgresq 7.3
Previous Message Martín Marqués 2010-11-25 01:19:09 Re: Repetidos errores en un servidor