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