[Lazarus-es] Zeos y SqlQuery no trae datos la consulta pero no tiene errores aparentes

Ismael L. Donis Garcia slibre en citricos.co.cu
Jue Jun 25 22:20:46 CEST 2015


Mañana les hago llegar otra consulta más optimizada porque ya hoy me tengo 
ir porque estoy apurado por cuestiones que debo resolver ahora.

Saludos Reiterados
========
| ISMAEL |
========
Only for the small landowners and Cubans companies
Website: www.sisconge.byethost15.com
              www.sisconge.hol.es
----- Original Message ----- 
From: "Maikel Enrique Pernia Matos" <corba en grannet.grm.sld.cu>
To: "Spanish version of Lazarus List" 
<lazarus-es en lists.lazarus.freepascal.org>
Sent: Thursday, June 25, 2015 3:11 PM
Subject: Re: [Lazarus-es] Zeos y SqlQuery no trae datos la consulta pero no 
tiene errores aparentes


Ah!, entiendo dices algo asi:

SELECT
   (SELECT t1.x FROM t1 WHERE t1.x = 'algo') AS y,
   (SELECT t1.x FROM t1 WHERE t1.x != 'algo') AS z
FROM t1


El jue, 25-06-2015 a las 14:42 -0400, Ismael L. Donis Garcia escribió:
> No en su caso es mucho más fácil aun ya que todo lo extrae de una sola 
> tabla
> VW_HISTORIASCLINICAS
>
> Lo que pasa que en la selección de los campos está realizando consultas 
> con
> wheres relacionados a la tabla del from de la consulta y eso no lo puede
> hacer porque el motor se pierde.
>
> Lo que tienes es que hacer las subconsultas dentro en el from y no delante
> del from, delante se pueden hacer pero no puede tener en el where relacion
> con el from posterior.
>
> Las relaciones deben ir desde dentro hacia afuera y nunca desde afuera 
> hacia
> adentro.
>
> Lo que tiene que hacer es anidar las consultas y como es una sola tabla
> poner relaciones con inner join para que le corra más rápido.
>
> Saludos Reiterados
> ========
> | ISMAEL |
> ========
> Only for the small landowners and Cubans companies
> Website: www.sisconge.byethost15.com
>               www.sisconge.hol.es
> ----- Original Message ----- 
> From: "Maikel Enrique Pernia Matos" <corba en grannet.grm.sld.cu>
> To: "Spanish version of Lazarus List"
> <lazarus-es en lists.lazarus.freepascal.org>
> Sent: Thursday, June 25, 2015 2:02 PM
> Subject: Re: [Lazarus-es] Zeos y SqlQuery no trae datos la consulta pero 
> no
> tiene errores aparentes
>
>
> Colegas:
> Disculpen, no he seguido el hilo; pero por lo que cita Ismael
>
> <quote>
>
> select x, (select y from t1 where t1.x=t2.x) as y from t2
>
> </quote>
>
> Pienso que quizás la solución correcta es utilizar consultas de unión si
> son soportadas por el SGBD
>
> suponiendo que existan dos tablas t1 y t2 y que ambas tengan un campo
> común (índice) al que llamaremos x, además la tabla t1 tiene los campos
> a, b y c, la tabla t2 tiene los campos d, e y f, la sintaxis podrían ser
> así:
>
> Ejemplo utilizando INNER JOIN:
>
> SELECT
>   t1.a,
>   t1.b,
>   t2.e AS h,
>   t2.f
>  FROM t1 INNER JOIN t2 ON t1.x = t2.x WHERE t1.c IS NOT NULL
>
> En este caso muestra los valores que coincidan de ambas tablas t1 y t2,
> que coincidan
>
> Ejemplo utilizando LEFT OUTER JOIN:
>
> SELECT
>   t1.a,
>   t1.b,
>   t2.e AS h,
>   t2.f
>  FROM t1 LEFT OUTER JOIN t2 ON t1.x = t2.x WHERE t1.c IS NOT NULL
>
> La sentencia LEFT OUTER JOIN retorna la pareja de todos los valores de
> la tabla izquierda (en este caso t1), con los valores de la tabla de la
> derecha correspondientes (en este caso t2), o retorna un valor nulo NULL
> en caso de no correspondencia.
>
> Ejemplo utilizando RIGHT OUTER JOIN:
>
> SELECT
>   t1.a,
>   t1.b,
>   t2.e AS h,
>   t2.f
>  FROM t1 RIGHT OUTER JOIN t2 ON t1.x = t2.x WHERE t1.c IS NOT NULL
>
> La sentencia RIGHT OUTER JOIN retorna la pareja de todos los valores de
> la tabla derecha (en este caso t2), con los valores de la tabla de la
> izquierda correspondientes (en este caso t2), o retorna un valor nulo
> NULL en caso de no correspondencia.
>
>
> Saludos,
> Maikel
>
> El jue, 25-06-2015 a las 13:21 -0400, Ismael L. Donis Garcia escribió:
> > Me puse a mirar la consulta detalladamente, antes no lo había realizado.
> > Tu
> > me disculpas pero esa consulta nunca te va a funcionar ya que lo que 
> > estás
> > haciendo en ella es claro que el motor no lo va a poder resolver.
> >
> > Mejor me dices los campos de la tabla y los resultados que quieres 
> > obtener
> > para hacerte la consulta. Una vez realizada la puedes estudiar o te la
> > puedo
> > explicar mejor.
> >
> > Lo siguiente nunca te va a funcionar:
> >
> > select x, (select y from t1 where t1.x=t2.x) as y from t2
> >
> > Y eso es precisamente lo que tu estás tratando de hacer.
> >
> > Para que funcione tendrías que sacar el select para entre el from y el
> > where
> >
> > Saludos Cordiales
> > ========
> > | ISMAEL |
> > ========
> > Only for the small landowners and Cubans companies
> > Website: www.sisconge.byethost15.com
> >               www.sisconge.hol.es
> > ----- Original Message ----- 
> > From: "Maxi" <maximiliano.duarte en gmail.com>
> > To: "Spanish version of Lazarus List"
> > <lazarus-es en lists.lazarus.freepascal.org>
> > Sent: Thursday, June 25, 2015 11:53 AM
> > Subject: Re: [Lazarus-es] Zeos y SqlQuery no trae datos la consulta pero
> > no
> > tiene errores aparentes
> >
> >
> > el "error" esta en el where interior, se ve que hace algo antes y lo 
> > rompe
> >
> > El día 25 de junio de 2015, 11:53, Ismael L. Donis Garcia
> > <slibre en citricos.co.cu> escribió:
> > > Mi consejo personal es que vallas desagregando la consulta para que te
> > > facilite localizar el error.
> > >
> > > Vas haciendo las consultas desde adentro hacia afuera para que vallas
> > > mirando los resultados que te dan.
> > >
> > > Saludos Cordiales
> > > ========
> > > | ISMAEL |
> > > ========
> > > Only for the small landowners and Cubans companies
> > > Website: www.sisconge.byethost15.com
> > >              www.sisconge.hol.es
> > > ----- Original Message ----- From: "Carlos Enrique Rodriguez"
> > > <cer en racssprg.com.ar>
> > > To: "Spanish version of Lazarus List"
> > > <lazarus-es en lists.lazarus.freepascal.org>
> > > Sent: Thursday, June 25, 2015 10:09 AM
> > > Subject: Re: [Lazarus-es] Zeos y SqlQuery no trae datos la consulta 
> > > pero
> > > no
> > > tiene errores aparentes
> > >
> > >
> > >
> > > Hola,
> > >          Si no te da error, una de las cuestiones que se me ocurre que
> > > puede estar pasando es que tengas valores NULL en alguno de los campos
> > > que vinculan tablas o están en el where.  Eso lo he sufrido más de una
> > > vez. :)
> > >
> > > Nos vemos
> > > Carlos
> > >
> > >
> > > El 25/06/2015 a las 10:51, Maxi escribió:
> > >>
> > >> 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
> > >>
> > >
> > >
> > > _______________________________________________
> > > Lazarus-es mailing list
> > > Lazarus-es en lists.lazarus.freepascal.org
> > > http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
> > >
> > >
> > >
> > > _______________________________________________
> > > Lazarus-es mailing list
> > > Lazarus-es en lists.lazarus.freepascal.org
> > > http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
> >
> >
> >
>
>
>
> --
> Este mensaje le ha llegado mediante el servicio de correo electronico que
> ofrece Infomed para respaldar el cumplimiento de las misiones del Sistema
> Nacional de Salud. La persona que envia este correo asume el compromiso de
> usar el servicio a tales fines y cumplir con las regulaciones establecidas
>
> Infomed: http://www.sld.cu/
>
>
> _______________________________________________
> Lazarus-es mailing list
> Lazarus-es en lists.lazarus.freepascal.org
> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>
>
>
> _______________________________________________
> Lazarus-es mailing list
> Lazarus-es en lists.lazarus.freepascal.org
> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es



--
Este mensaje le ha llegado mediante el servicio de correo electronico que 
ofrece Infomed para respaldar el cumplimiento de las misiones del Sistema 
Nacional de Salud. La persona que envia este correo asume el compromiso de 
usar el servicio a tales fines y cumplir con las regulaciones establecidas

Infomed: http://www.sld.cu/


_______________________________________________
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