Visual Basic - Consulta DB relacional

Life is soft - evento anual de software empresarial
 
Vista:

Consulta DB relacional

Publicado por ale (3 intervenciones) el 16/01/2004 06:07:10
Hola, tengo una duda que no puedo resolver...
Voy a dar un ejemplo sencillo de mi dificultad.

Dadas las siguientes tablas
persona(idpersona, nombre)
libro(idlibro, idpersona, genero)

Ahora como hago para seleccionar "solamente" a las personas que leen por ej: el idlibro = 1 e idlibro = 2.
O sea no quiero que me traiga gente que lee idlibro = 1 or idlibro = 2

Tengo la siguiente sintaxis a este modo de ejemplo

Select * from persona p, factura f where p.idpersona = f.idpersona and f.idlibro = 1 AND f.idlibro = 2
De este modo no me trae ningun registro.

En cambio si uso la sentencia OR de este modo
Select * from persona p, factura f where p.idpersona = f.idpersona and f.idlibro = 1 OR f.idlibro = 2.
Me trae, todos las personas que leen idlibro = 1 o idlibro = 2.

Lo unico que necesito es solamente las personas que lean "conjuntamente" idlibro = 1 y idlibro = 2

Gracias a quien pueda colaborar.
Saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Consulta DB relacional

Publicado por Cecilia Colalongo (3116 intervenciones) el 16/01/2004 11:40:10
Fijate con esto:

SELECT * FROM Personas WHERE EXISTS(SELECT IDPersona FROM
Factura WHERE IDLibro=1) AND EXISTS(SELECT IDPersona FROM
Factura WHERE IDLibro=2)

Sino:

SELECT IDPersona,COUNT(DISTINCT IDLibro) AS CANT FROM Factura
WHERE IDLibro IN (1,2)
GROUP BY IDPersona
HAVING COUNT(DISTINCT IDLibro)=2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar