[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 >>> =
|
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--=
+