[Lazarus-es] Zeos y SqlQuery no trae datos la consulta perono tiene errores aparentes
Ismael L. Donis Garcia
slibre en citricos.co.cu
Vie Jun 26 14:52:44 CEST 2015
Concuerdo con José Antonio que el primer case sobra ya que la consulta la
filtras con un where E.Practicas = 'Egreso de internación'
Por tal motivo los datos siempre cumpliran esa condición
Otra cosa Maxi que no concuerdo contigo es que los JOIN devuelvan valores
erroneos, más bien pienso que es que no hemos planteado bien la consulta y
por eso obtenemos datos no esperados.
Ya José te dio una consulta. Ahora prueba la siguiente y dime resultados.
select x.* from
(select DISTINCT R.CUENTA, R.NOMBRE, R.OBRASOCIAL, R.FECHAPRACTICA AS
INGRESO, E.EGRESO, R.NROHC, S.SECTOR FROM
(Select EG.CUENTA, EG.FECHAPRACTICA, MIN(EG.PRACTICAS) as EGRESO
from VW_HISTORIASCLINICAS EG
where EG.Practicas = 'Egreso de internación'
group by EG.CUENTA, EG.FECHAPRACTICA) E INNER JOIN (VW_HISTORIASCLINICAS R
INNER JOIN
(Select first 1 SE.CUENTA, SE.FECHAPRACTICA, (case when SE.CODIGOPRACTICA =
'SEC_CAMA' then SE.DETALLEPRACTICA else null end) as SECTOR
from VW_HISTORIASCLINICAS SE where SE.Practicas = 'Sector'
order by SE.FECHAPRACTICA desc) S ON R.CUENTA = S.CUENTA and
R.FECHAPRACTICA <= S.FECHAPRACTICA) ON E.CUENTA = R.CUENTA and
E.FECHAPRACTICA >= R.FECHAPRACTICA) x
where x.egreso is null
Pruebala con el select externo y sin el.
Saludos Reiterados
========
| ISMAEL |
========
Only for the small landowners and Cubans companies
Website: www.sisconge.byethost15.com
www.sisconge.hol.es
----- Original Message -----
From: "Jose antonio Cuello Principal" <jcuello en artextrading.com>
To: "Spanish version of Lazarus List"
<lazarus-es en lists.lazarus.freepascal.org>
Sent: Friday, June 26, 2015 3:14 AM
Subject: Re: [Lazarus-es] Zeos y SqlQuery no trae datos la consulta perono
tiene errores aparentes
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
_______________________________________________
Lazarus-es mailing list
Lazarus-es en lists.lazarus.freepascal.org
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
More information about the Lazarus-es
mailing list