Excerpts from Guillermo Villanueva's message of lun jul 09 13:06:37 -0400 2012:

> Controlando que dentro y fuera  de la subconsulta la clavebeneficiario sea
> no nula, la consulta devuelve lo que esperaba.

> Porque? es el comportamiento normal?

Es extraño la primera vez que lo ves, pero la explicación es que la
lógica booleana de tres valores exige que sea así:

http://www.postgresql.org/docs/9.1/static/functions-subquery.html
Mira 9.20.3 NOT IN.  Dice:
        Note that if the left-hand expression yields null, or if there
        are no equal right-hand values and at least one right-hand row
        yields null, the result of the NOT IN construct will be null,
        not true.

traduzco:
"si la expresión a la izquierda retorna nulo, o si no hay valores
iguales a la derecha y al menos uno de los valores de la derecha es
nulo, el resultado del NOT IN es nulo, no verdadero"

        This is in accordance with SQL's normal rules for
        Boolean combinations of null values.


Puede ser más simple conceptualmente reformular la consulta usando NOT
EXISTS.

-- 
Álvaro Herrera <[email protected]>
-
Enviado a la lista de correo pgsql-es-ayuda ([email protected])
Para cambiar tu suscripci�n:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

Responder a