Re: Error en consulta

From: Miguel Rodríguez Penabad <penabad(at)gmail(dot)com>
To: Juan Martínez <jeugenio(at)umcervantes(dot)cl>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Error en consulta
Date: 2007-07-18 22:40:12
Message-ID: 95335e4e0707181540g307a4c44ve6e1ad5b17a5aa54@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

> Pero, entonces que esta evaluando?

A eso yo no te puedo contestar :)

> AMR=# SELECT clp FROM llpp
> WHERE clp=299549 AND clp NOT IN (SELECT clp FROM Caja
> WHERE clp=299549);
>
> Sabemos que la subconsulta no retorna valores (que entonces me imagino
> que no es lo mismo que retornar null)...

No, no es eso. Si la subconsulta no devuelve filas, el NOT IN devuelve
cierto: básicamente, "cualquiercosa no está en el conjunto vacío" es
cierto.
El problema es que la subconsulta devuelva filas con nulos. La
consulta problemática original no era esa que tú pones, sino
SELECT clp FROM llpp
WHERE clp=299549 AND clp NOT IN (SELECT clp FROM Caja);
(Sin el where en la subconsulta)

Supón que el select devuelve los valores 1, 2, y NULL.

La consulta quedaría entonces como

SELECT clp FROM llpp
WHERE clp=299549
AND clp <> 1 and clp<>2 and clp<>NULL;

que, como acordamos, no es cierto.

Saludos
Miguel

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2007-07-18 23:16:40 Re: Programación en C
Previous Message Sebastián Villalba 2007-07-18 22:38:38 Re: Hacer update sobre tablas con integridad