Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-10-2003
Angel Angel is offline
Miembro
 
Registrado: may 2003
Ubicación: Alicante, España
Posts: 58
Poder: 22
Angel Va por buen camino
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.
Responder Con Cita
  #2  
Antiguo 14-10-2003
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
¿ 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
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #3  
Antiguo 14-10-2003
Angel Angel is offline
Miembro
 
Registrado: may 2003
Ubicación: Alicante, España
Posts: 58
Poder: 22
Angel Va por buen camino
la forma propuesta funciona, pero ¿no existe otra forma más rápida?



Gracias
Responder Con Cita
  #4  
Antiguo 14-10-2003
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
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.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 01:41:13.


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
Copyright 1996-2007 Club Delphi