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
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 |