Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Obtener filas que contienen dos o más valores distintos (https://www.clubdelphi.com/foros/showthread.php?t=4371)

Angel 14-10-2003 10:30:33

Obtener filas que contienen dos o más valores distintos
 
Hola, este tema se trató en su día, pero lo dejé apartado por problemas de tiempo. Ahora, al retomarlo me he dado cuenta que no funciona. De todas formas, como sé que mucha gente no siguió el tema anterior, voy a intentar explicar la situación.

Tengo 3 tablas, una con pacientes, otra con diagnósticos (OPC_PALS_CLAVES) y la tercera que une pacientes con diagnósticos (PALS_CLAVES) de tal modo que tengo lo siguiente (ejemplo)

Código:


PACIENTES                PALS_CLAVES                        OPC_PALS_CLAVES
--------------                -----------------                  ------------------------
    1                        PAC        OPC                                1
    2                        -----------------                        2
    3                        1        1                                3
    4                        1        2                                4
    5                        1        3                                5
    6                        1        5
                        2        1
                        2        4

Pues bien, lo que necesito es encontrar todos los pacientes que cumplan dos o más diagnosticos, es decir, (y aunque esto no funciona), lo que quiero es algo del estilo:

select pac from pals_claves where opc=1 and opc=5

para que me devolviara el paciente 1.

¿Como puedo hacer esto?.

si lo hago utilizando
select pac from pals_claves where opc in (1,5)

me mostraría el paciente 1 y 2, y yo solo quiero que me muestre el 1 (porque es el que realmente cumple que se le han diagnosticado esas dos enfermedades)



De nuevo, gracias por vuestra ayuda y comprensión.

guillotmarc 14-10-2003 11:11:35

¿ Has probado con subconsultas ?

Algo como :

Código:

select PAC from PACIENTES
where PAC in (select PAC from PALS_CLAVES where OPC = 1) and
      PAC in (select PAC from PALS_CLAVES where OPC = 5) and


Angel 14-10-2003 15:55:23

la forma propuesta funciona, pero ¿no existe otra forma más rápida?



Gracias

guillotmarc 14-10-2003 17:27:56

Hola.

No se me ocurre ninguna otra forma. De todas maneras si tienes un índice para los campos OPC, PAC en la tabla PALS_CLAVES, esta consulta tiene que ser muy rapida.

Saludos.


La franja horaria es GMT +2. Ahora son las 07:18:23.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi