[Lazarus-es] Zeos y SqlQuery no trae datos la consulta pero no tiene errores aparentes
Jose antonio Cuello Principal
jcuello en artextrading.com
Vie Jun 26 09:14:43 CEST 2015
Si hace Select x.* from (...)
te puedes ahorrar ese select y poner directamente el contenido del from puesto que te estás trayendo todos los campos de la subselect, por lo que directamente
Select Distinct ....
debe traerte el mismo resultado.
Otra cosa es, "case when R.Practicas = (..) as Ingreso" para traerte el campo R.FECHAPRACTICA, luego haces "where R.Practicas = (...)" por lo que el case siempre se cumple y trae el campo R.FECHAPRACTICA. En este caso sobra el case, directamente traerse el campo R.FECHAPRACTICA.
Este mismo caso se puede aplicar al siguiente case, pudiendo simplificarse en un select first, en vez de un select Min. Será más rápido el first al no tener que procesar todos los registros y ahorrando el Cast de conversión de tipo.
En el segundo subselect, a los campos le faltan los alias de la vista (VW_HISTORIASCLINICAS SE), puede no ser importante, pero en este caso que siempre enlazamos con la misma vista y los campos se repiten podemos evitar problemas de ambigüedad.
Con todo esto me queda la siguiente select, espero sea más sencillo encontrar el problema.
select DISTINCT r.CUENTA, R.NOMBRE, R.OBRASOCIAL, R.NROHC, R.FECHAPRACTICA,
(Select first 1 E.FECHAPRACTICA
from VW_HISTORIASCLINICAS E
where E.CUENTA = R.CUENTA
and E.FECHAPRACTICA >= R.FECHAPRACTICA
and E.Practicas = 'Egreso de internación'
order by E.FECHAPRACTICA ASC) as Egreso,
(Select first 1 (case when SE.CODIGOPRACTICA = 'SEC_CAMA' then SE.DETALLEPRACTICA else null end) as sector
from VW_HISTORIASCLINICAS SE
where SE.CUENTA = R.CUENTA
and SE.FECHAPRACTICA >= R.FECHAPRACTICA
and SE.Practicas = 'Sector'
order by SE.FECHAPRACTICA desc) as Sector
from VW_HISTORIASCLINICAS R
where R.Practicas = 'Recepción internacion'
Un saludo
----- Mensaje original -----
De: "Maxi" <maximiliano.duarte en gmail.com>
Para: "Spanish Version of Lazarus List" <lazarus-es en lists.lazarus.freepascal.org>
Enviados: Jueves, 25 de Junio 2015 15:51:57
Asunto: [Lazarus-es] Zeos y SqlQuery no trae datos la consulta pero no tiene errores aparentes
Firebird 2.1.3
Lazarus 1.4.0 FCP 2.6.4
ZeosLib 7.1.4 estable
Tengo una consulta medio rara por como esta organizado el
almacenamiento (no es mi base aclaro) la consulta funciona en otros
manejadores de datos sin problemas pero en el ide de Lazarus no trae
datos pero no da error en la consulta
Creo que sobreinterpreta o prepara la consulta y algo no le gusta a
estos controles porque no trae datos si los nombres de los campos.
sospecho esto porque en el generador de consultas del componente
sqlquery al hacer el chequeo de sintaxis dice que espera una , en una
linea
No me paso antes con este tipo de consultas.
select x.* from
(select
DISTINCT
r.CUENTA,
R.NOMBRE,
R.OBRASOCIAL,
case when R.Practicas = 'Recepción internacion' then R.FECHAPRACTICA
else null end as Ingreso,
CAST((Select MIN(case when E.Practicas = 'Egreso de internación'
then E.FECHAPRACTICA else null end) as Egreso from
VW_HISTORIASCLINICAS E
where E.CUENTA = R.CUENTA and E.FECHAPRACTICA >= R.FECHAPRACTICA
and E.Practicas = 'Egreso de internación'
) as DATE) as Egreso,
R.NROHC,
(Select first 1 (case when CODIGOPRACTICA = 'SEC_CAMA' then
DETALLEPRACTICA else null end) as sector from
VW_HISTORIASCLINICAS SE
where
SE.CUENTA = R.CUENTA
and
SE.FECHAPRACTICA >= R.FECHAPRACTICA
and SE.Practicas = 'Sector' order by SE.FECHAPRACTICA desc
) as Sector
from
VW_HISTORIASCLINICAS R
where
R.Practicas = 'Recepción internacion') x
where x.egreso is null
--
El que pregunta aprende, y el que contesta aprende a responder.
No a la obsolecencia programada:
http://www.rtve.es/noticias/20110104/productos-consumo-duran-cada-vez-menos/392498.shtml
Linux User #495070
http://domonetic.com/blog
_______________________________________________
Lazarus-es mailing list
Lazarus-es en lists.lazarus.freepascal.org
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
--
José Antonio Cuello
Dpto. Informatica
Artex Trading sa
Gold Football sl
More information about the Lazarus-es
mailing list