[Pgsql-ayuda] Buscando nulos en campos que referencían a otras tablas

Fernando Romo pop@cofradia.org
02 Dec 2002 12:36:38 +0600


--=-qwfOcxkFwyzGlDGSZnov
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

Si mal no recuerdo poner:

where Campo =3D NULL

es invalido, tienes que poner

Where Campo IS NULL=20

o su contraparte

Where Campo IS NOT NULL

Saludos.... EL Pop

On Tue, 2002-12-03 at 00:27, Gunnar Wolf wrote:
> Hola mundo,
>=20
> A ver... Tengo una duda por ac=E1 digna de ustedes: Cre=E9 una base en la=
 cual
> tengo una tabla as=ED:
>=20
>=20
> CREATE TABLE "sess_quest" (
>   "sess_id" integer REFERENCES sess(id),
>   "quest_id" integer REFERENCES quest(id),
>   "opt_id" integer REFERENCES opt(id) DEFAULT NULL,
>   PRIMARY KEY("sess_id", "quest_id")
> );
>=20
> Crear una sesi=F3n en el sistema significa crear un registro en la tabla
> sess, y un n=FAmero determinado de registros en esta tabla sess_quest,
> ligando la sesi=F3n a una serie de preguntas. Cada pregunta tiene ligada
> varias opciones, de las cuales con esta tabla puedo elegir una.
>=20
> Todo bien. Ac=E1, por ejemplo, veo las preguntas relativas a una sesi=F3n=
,
> tanto las que ya fueron respondidas como las que a=FAn no:
>=20
> exam=3D# select * from sess_quest where sess_id=3D1;
>  sess_id | quest_id | opt_id
> ---------+----------+--------
>        1 |        5 |
>        1 |        6 |
>        1 |        8 |
>        1 |        4 |
>        1 |       17 |
>        1 |       19 |
>        1 |       29 |
>        1 |       15 |     39
>        1 |        2 |      4
>        1 |       18 |     44
>        1 |       14 |     37
> (11 rows)
>=20
> Ahora, cuando quiero seleccionar las preguntas que no han sido
> respondidas:
>=20
> exam=3D# select * from sess_quest where opt_id =3D NULL;
>  sess_id | quest_id | opt_id
> ---------+----------+--------
> (0 rows)
>=20
> He estado jugando con casi cualquier combinaci=F3n, incluyendo cosas
> extra=F1as como esta:
>=20
> exam=3D# select * from sess_quest where opt_id > 0 or opt_id <=3D 0;
>  sess_id | quest_id | opt_id
> ---------+----------+--------
>        1 |       15 |     39
>        1 |        2 |      4
>        1 |       18 |     44
>        1 |       14 |     37
> (4 rows)
>=20
> Y no le encuentro la l=F3gica... Tal vez por estar amarrado el opt_id a o=
tra
> tabla - pero no encuentro una manera limpia de representar esto. =BFAlgui=
en
> tiene alguna idea? Estoy usando PostgreSQL sobre Debian/i386 (prob=E9 con=
 la
> versi=F3n 7.2.3-3 y 7.2.1-2, sobre Woody y Sid respectivamente).
>=20
> Gracias, y saludos.
--=20
Saludos..... El Pop
             pop@cofradia.org


--=-qwfOcxkFwyzGlDGSZnov
Content-Type: application/pgp-signature; name=signature.asc
Content-Description: This is a digitally signed message part

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.6 (GNU/Linux)
Comment: For info see http://www.gnupg.org

iD8DBQA96v925JoZEoHh8OARAlI/AJ9pZQRAi7l/K0HLxWXxTzCjbTo44ACgl2GP
t+tUiO5P1z8GOsZM15fiXXk=
=RnU2
-----END PGP SIGNATURE-----

--=-qwfOcxkFwyzGlDGSZnov--