Problema con campos nulos

From: "Ariel" <buenasalud(at)ubbi(dot)com>
To: <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Problema con campos nulos
Date: 2006-04-25 21:16:52
Message-ID: 000f01c668ad$93541570$fa5367c0@GISARIEL
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Estimados

Se presento un problema con el siguiente query en donde el campo
no_facturable puede tomar varios valores incluyendo nulo, como se puede
observar en el siguiente Query

tempo=# select no_facturable from padron group by 1;

no_facturable

---------------

NF

BC

(3 rows)

Pero cuando hago las siguientes consultas me arroja valores no esperados
cuando incluyo 3 campos concectados por un and.

Les muestro la situacion

tempo=# select count(*) from padron_new where situacion <> 'BA' and
situacion <> 'BC';

count

--------

107350

(1 row)

tempo=# select count(*) from padron_new where situacion <> 'BA' and
situacion <> 'BC' and no_facturable <> 'BC';

count

-------

714

(1 row)

tempo=# select count(*) from padron_new where (situacion <> 'BA' and
situacion <> 'BC') and (no_facturable <> 'BC' or no_facturable = '');

count

-------

714

(1 row)

tempo=# select count(*) from padron_new where (situacion <> 'BA' and
situacion <> 'BC') and (no_facturable = 'NF' or no_facturable = '');

count

-------

714

(1 row)

tempo=# select count(*) from padron_new where (situacion <> 'BA' and
situacion <> 'BC') and (no_facturable = 'NF' or no_facturable is null);

count

--------

106939

(1 row)

tempo=# select count(*) from padron_new where (situacion <> 'BA' and
situacion <> 'BC') and (no_facturable <> 'BC' or no_facturable is null);

count

--------

106939

(1 row)

tempo=# select count(*) from padron_new where (situacion <> 'BA' and
situacion <> 'BC') and (no_facturable <> 'BC');

count

-------

714

(1 row)

tempo=# explain analyze select count(*) from padron_new where (situacion <>
'BA' and situacion <> 'BC') and (no_facturable <> 'BC');

QUERY PLAN

----------------------------------------------------------------------------
--------------------------------------------

Aggregate (cost=20120.29..20120.29 rows=1 width=0) (actual
time=468.000..468.000 rows=1 loops=1)

-> Seq Scan on padron_new1 (cost=0.00..19853.72 rows=106624 width=0)
(actual time=0.000..468.000 rows=714 loops=1)

Filter: ((situacion <> 'BA'::bpchar) AND (situacion <>
'BC'::bpchar) AND ((val_atr_22)::text <> 'BC'::text))

Total runtime: 468.000 ms

(4 rows)

El valor correcto es de 106939, la pregunta es ¿debo incluir explícitamente
que el campo no_facturable sea nulo? Esto esta bien?

Si alguien me puede aclarar un poco lo que ocurre se lo agradezco, porque me
dejo un poco confundido.

Muchas gracias

Ariel Tavella

Area GIS

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Fernanda Fueltala 2006-04-25 21:39:23 RV:Server doesn't listen
Previous Message Julio Rivero 2006-04-25 21:13:18 Re: Server doesn't listen