Skip site navigation (1) Skip section navigation (2)

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 (view raw or flat)
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

pgsql-es-ayuda by date

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

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group