Coger datos según resultados de consulta

23/09/2004 - 11:02 por Miguel Tubia | Informe spam
hola,
ante todo pido perdón por la consulta pq no creo q sea muy aclaratorio.
el caso es que tengo que realizar una consulta, aunq antes de comentarlo
explico un poco el escenario con una tabla de muestra, a ver si me pueden
echar una mano.

Tenemos, por un lado, la tabla de terapias, que consta de:
Terapias:
(Id_Terapia tinyint, descripcion varchar(35))

Muestra:
Id_Terapia Descripcion

100 Ingresado
200 Urgencia
300 Rehabilitacion

Por otro lado tenemos una tabla que se llama TipoTerapias, con la
estructura:
TipoTerapias
(Tipo tinyint, Terapia tinyint)

En esta tabla se guarda que terapias se tienen que consultar por cada tipo
de muestreo que se quiere hacer. Si quiero hacer un muestreo para el tipo de
muestreo 1, y quiero que solo lo haga en las terapias 100 y 200, se indica
aqui:

Muestra:
Tipo Terapia
1 100
1 200

si un tipo de muestreo, por ejemplo el 2, ha de coger todas las terapias, no
se mete nada. Osea, que si busco en esta tabla y hay terapias, cojo las que
haya, si no hay, cojo todas.
Esto va luego para consultar en una tabla que guarda todos los servicios
realizados, y en un campo tiene la terapia con la que se ha hecho ese
servicio. A la hora de hacer encuestas, tenemos varios tipos (1, 2, 3...), y
cada encuesta tiene sus propias caracteristicas (Encuesta de servicio de
urgencias, p.e.), y esa tiene, como opcion, que la haga de las terapias 200
y 300 (p.ej.). Para hacer esa consulta haría un where
terapia=(-) --> aqui cogería las terapias de las que se permite
hacer la encuesta: todas si no se especifica nada para ese tipo en la tabla
TipoTerapias, o solo las indicadas si hay alguna. Es esta consulta la q me
falta.
Espero haberme explicado... Ya podéis perdonar la longitud del mensaje.
Seguro q es una chorrada pero es q ahora no caigo y llevo ni sé cuanto
intentándolo.
Agradeceré cualquier ayuda o indicación o pista que se me pueda ofrecer
Un saludo
 

Leer las respuestas

#1 Miguel Tubia
23/09/2004 - 13:24 | Informe spam
Hola,
bueno, lo he resuelto de la siguiente forma:
en la tabla de terapias he creado una entrada por cada tipo de encuesta, y
las que han de buscar en todas las terapias les he puesto el valor '0' en
terapias, y luego he hecho:

Select x.terapia
from Terapias x ,
(select Terapia from TipoTerapia where Tipo=1 ) y
where x.Terapia = case when y.Terapia!=0 then y.Terapia when y.Terapia=0
then x.Terapia end)

Lo he intentado, en vez de con 0, con NULL, pero no puedo meter NULLS en la
tabla pq es clave primaria. De todos modos no pasa nada pq no hay codigos de
valor 0, aunq mejor pongo negativos que de esos fijo q no hay.
Bueno, muchas gracias por todo
Un saludo ;)

Preguntas similares