[Pgsql-ayuda] Join con campos null

Antonio Castro acastro@ciberdroide.com
Fri, 21 Dec 2001 08:29:09 +0100 (CET)


On Thu, 20 Dec 2001, Estrella Dominguez wrote:

> Saludos ...
> Tengo un problema con un query, el cual realiza un
> join de dos tablas, como las sig:
> La Tabla A consta de dos campos
> cve_a  not null
> Nombre not null
> la llave de esta tabla es el campo cve_a
>=20
> La Tabla B consta de dos campos
> cve_b not null
> cve_a
> Descripcion not null
> la llave de esta tabla es el campo cve_b
>=20
> quiero hacer un select de la siguiente froma:
> SELECT nombre,Descripcion
> FROM   A,B
> WHERE  A.cve_a =3D B.cve_a;
>=20
> Donde el campo B.cve_a (de la tabla B), puede contener
> valores NUll. Cuando ejecuto el select me trae solo
> los=20
> registros que cumplen la condicion: A.cve_a =3D B.cve_a,
> pero no me trae los registros de la tabla B que tienen
> el campo cve_a =3D NULL

=09SELECT nombre,Descripcion=20
=09FROM A,B=20
=09WHERE  A.cve_a =3D B.cve_a  OR   A.cve_a IS NULL;

Hay que comprender que NULL no es un valor,  sino la ausencia de valor.

El valor cero o el valor cadena vacia etc. no son equivalentes a un NULL.

En ocasiones un determinado campo que admite nulos puede contener=20
valores de cero con significado muy distinto y con importante repercusi=F3n
en la programaci=F3n.

Por ejemplo podemos usar el valor cero en un campo de gastos de env=EDo
para indicar env=EDo gratuito y NULL para indicar que no hubo env=EDo y no
tiene siquiera sentido considerar su existencia.=20

Otro ejemplo. El peso en kilos de un boligrafo ser=EDa cero y el peso en
kilos de un servicio de asistencia t=E9cnica ser=EDa NULL porque no tiene
sentido.

Seguro que hay ejemplos mejores.


Un saludo

Antonio Castro

+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--=
+
        /\     /\      Ciberdroide Inform=E1tica (Tienda de Linux)
          \\W//            <<< http://www.ciberdroide.com >>>
=09 _|0 0|_                                                   =20
+-oOOO--(___o___)--OOOo----------------------------------------------------=
+=20
|  . . . . U U . . . . Antonio Castro Snurmacher  acastro@ciberdroide.com  =
| =20
|  . . . . . . . . . .                                                     =
|=20
+()()()----------()()()----------------------------------------------------=
+
| *** 1.700 sitios clasificados por temas sobre Linux en ***Donde_Linux*** =
|
| <<< http://www.ciberdroide.com/misc/donde/dondelinux.html >>>            =
|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--=
+