Java y BBDD
hola,
tengo una pequeña duda, a ver si se puede realizar esto.
Tengo una tabla que contiene datos médicos. En esta tabla hay dos campos importantes.
Fecha
Tipo (especifico si es fecha ingreso o fecha alta).
Es decir, solo tengo un campo para la fecha pero con el tipo puedo especificar si es alta o ingreso.
Como puedo hacer para que me salga por pantalla la fecha de ingreso más antigua y la fecha de alta más nueva??
es decir, necesito saber cuando fue el primer ingreso de un paciente y cuando salió por ultima vez. Muchas gracias
tengo una pequeña duda, a ver si se puede realizar esto.
Tengo una tabla que contiene datos médicos. En esta tabla hay dos campos importantes.
Fecha
Tipo (especifico si es fecha ingreso o fecha alta).
Es decir, solo tengo un campo para la fecha pero con el tipo puedo especificar si es alta o ingreso.
Como puedo hacer para que me salga por pantalla la fecha de ingreso más antigua y la fecha de alta más nueva??
es decir, necesito saber cuando fue el primer ingreso de un paciente y cuando salió por ultima vez. Muchas gracias
Bueno en SQL normal seria ......
codigopaciente=0001
select mn.fecha,mx.fecha
from datosMed mn,datosMed mx
where mx.codigo="0001"
and mx.codigo=mn.codigo
and mn.fecha in (Select min(fecha) from datosMed where tipo="Ingreso" and codigo="0001")
and mx.fecha in (Select max(fecha) from datosMed where tipo="Salida" and codigo="0001")
codigopaciente=0001
select mn.fecha,mx.fecha
from datosMed mn,datosMed mx
where mx.codigo="0001"
and mx.codigo=mn.codigo
and mn.fecha in (Select min(fecha) from datosMed where tipo="Ingreso" and codigo="0001")
and mx.fecha in (Select max(fecha) from datosMed where tipo="Salida" and codigo="0001")
Perdona, pero creo que me he explicado mal
estoy hablando de una tabla que contiene 2 campos
tipo y fecha. No hay dos tablas como tu especificas, me podrias especificar como se harÃa, gracias!
estoy hablando de una tabla que contiene 2 campos
tipo y fecha. No hay dos tablas como tu especificas, me podrias especificar como se harÃa, gracias!
Bueno si solo tienes dos datos....
como sabes a que paciente pertenecen esas fechas?
sino no tienes codigo o nombre?
o solo lo haces sobre un paciente?
y no no estoy refieriendome a dos tablas...
es la misma...
pero la acceso dos veces...
para que te devuelva dos fechas...
la primera primer ingreso y la segunda el ultimo
egreso...
bueno respondeme las preguntas anteriores y con gusto te ayudo..
como sabes a que paciente pertenecen esas fechas?
sino no tienes codigo o nombre?
o solo lo haces sobre un paciente?
y no no estoy refieriendome a dos tablas...
es la misma...
pero la acceso dos veces...
para que te devuelva dos fechas...
la primera primer ingreso y la segunda el ultimo
egreso...
bueno respondeme las preguntas anteriores y con gusto te ayudo..
A ver, no solo tengo dos campos en la tabla que conste, pero los que me dan problemas son estos.
Yo quiero hacer un select que me retorne la fecha de ingreso mas "vieja" y la fecha de alta "mas nueva". Es decir, tengo que hacer un max y un min pero teniendo en cuenta el tipo (si es ingreso o alta)
...
por eso no veo clara tu sentencia, utilizas dos tablas y me lÃo.
Si me puedes ayudar te lo agradeceria!
Yo quiero hacer un select que me retorne la fecha de ingreso mas "vieja" y la fecha de alta "mas nueva". Es decir, tengo que hacer un max y un min pero teniendo en cuenta el tipo (si es ingreso o alta)
...
por eso no veo clara tu sentencia, utilizas dos tablas y me lÃo.
Si me puedes ayudar te lo agradeceria!
Bueno........
No son dos tablas...
es la misma pero la nombro dos veces...
eso es porque vamos a pedir el mismo campo dos veces...
"FECHA"
pero queremos dos datos distintos min y max
entonces hago ...
select mn.fecha,mx.fecha
from datosMed mn,datosMed mx
where
and mn.fecha in (Select min(fecha) from datosMed where tipo="Ingreso")
and mx.fecha in (Select max(fecha) from datosMed where tipo="Salida")
este query te va a devlover dos datos...
el primero la fecha mas antigua sobre el "ingreso"...
y el segundo la fecha mas reciente de "egreso"
pero sobre todos los datos de la tabla...
no sobre un paciente en especifico...
No son dos tablas...
es la misma pero la nombro dos veces...
eso es porque vamos a pedir el mismo campo dos veces...
"FECHA"
pero queremos dos datos distintos min y max
entonces hago ...
select mn.fecha,mx.fecha
from datosMed mn,datosMed mx
where
and mn.fecha in (Select min(fecha) from datosMed where tipo="Ingreso")
and mx.fecha in (Select max(fecha) from datosMed where tipo="Salida")
este query te va a devlover dos datos...
el primero la fecha mas antigua sobre el "ingreso"...
y el segundo la fecha mas reciente de "egreso"
pero sobre todos los datos de la tabla...
no sobre un paciente en especifico...
Perdon hay un error es...
select mn.fecha,mx.fecha
from datosMed mn,datosMed mx
where
mn.fecha in (Select min(fecha) from datosMed where tipo="Ingreso")
and mx.fecha in (Select max(fecha) from datosMed where tipo="Salida")
select mn.fecha,mx.fecha
from datosMed mn,datosMed mx
where
mn.fecha in (Select min(fecha) from datosMed where tipo="Ingreso")
and mx.fecha in (Select max(fecha) from datosMed where tipo="Salida")
Okis! esto parece que funciona, pero que pasa si o bien la fecha de ingreso o bien la fecha de alta estan vacias?
Bueno si estan vacias..... o nulas
no las toma en cuenta ...
porque no son fechas validas........
en eso no hay problema ...
me imagino que hay un momento durante el proceso
de tu aplicacion en la que cualesquiera de esas dos fechas estan vacias...
pero eso no importa ...
solo te saca o valida los valores llenos....
solo que acuerdate que me habias dicho que lo querias hacer por paciente....
entonces deberias agregar en el query...
el codigo o el nombre de tu paciente...
para que te retorne los datos en base a un paciente especifico...
no las toma en cuenta ...
porque no son fechas validas........
en eso no hay problema ...
me imagino que hay un momento durante el proceso
de tu aplicacion en la que cualesquiera de esas dos fechas estan vacias...
pero eso no importa ...
solo te saca o valida los valores llenos....
solo que acuerdate que me habias dicho que lo querias hacer por paciente....
entonces deberias agregar en el query...
el codigo o el nombre de tu paciente...
para que te retorne los datos en base a un paciente especifico...
Lo he probado y la query no me retorna nada si una de las dos fechas esta vacÃa, como se puede arreglar tal situación?
//Prueba esto
select mn.fecha,mx.fecha
from datosMed mn,datosMed mx
where
(mn.fecha in (Select min(fecha) from datosMed where tipo="Ingreso")
or mn.fecha is null)
and (mx.fecha in (Select max(fecha) from datosMed where tipo="Salida") or mx.fecha is null)
select mn.fecha,mx.fecha
from datosMed mn,datosMed mx
where
(mn.fecha in (Select min(fecha) from datosMed where tipo="Ingreso")
or mn.fecha is null)
and (mx.fecha in (Select max(fecha) from datosMed where tipo="Salida") or mx.fecha is null)
no va ninyo!!! me dan los dos campos en blanco cuando es erroneo, porque existe uno de los dos, buaa!!!
Tenes toda la razon...
me equivoque...
que puedo decir soy mortal..
pero este no falla...
habia que darle un UNION......
select mn.fecha as ingreso ,' ' as egreso
from datosMed mn
where
mn.fecha in (Select min(fecha) from datosMed where tipo="Ingreso")
UNION select '' as ingreso ,mx.fecha as egreso
from datosMed mx
where
mx.fecha in (Select max(fecha) from datosMed where tipo="Salida");
me equivoque...
que puedo decir soy mortal..
pero este no falla...
habia que darle un UNION......
select mn.fecha as ingreso ,' ' as egreso
from datosMed mn
where
mn.fecha in (Select min(fecha) from datosMed where tipo="Ingreso")
UNION select '' as ingreso ,mx.fecha as egreso
from datosMed mx
where
mx.fecha in (Select max(fecha) from datosMed where tipo="Salida");
ei!! que no pasa nada eh!! lo que pasa es que comienzo a estar desesperada, se me esta rebotando esta query...por cierto, voy a probarla y te cuento, oka?
