[Lazarus-es] consulta sobre SQL para combinar tablas

Maikel Enrique Pernía Matos corba en grannet.grm.sld.cu
Lun Feb 3 14:48:32 CET 2014


Héctor F:

Prueba este SQL al parecer tenías un «INNER JOIN» de más, aunque sin la
estructura de la BD (tablas, campos y relaciones) es poco difícil
verificar si esto resuelve tu problema, puedes indagar sobre: LEFT OUTER
JOIN y RIGHT OUTER JOIN,  otras forma de convinar tablas; que dependiendo
del caso es mejor que el tradicional «INNER JOIN»

<sql-code>
SELECT
   NegSerAct.FecIniNegSerAct,
   NegSerAct.SemIniNegSerAct,
   NegSerAct.DuracionPlan,
   NegSerAct.DuracionReal,
   Actividades.NomAct,
   Servicios.NomSer,
   Negocios.NomNegocio
FROM
  NegSerAct
INNER JOIN Servicios ON NegSerAct.IDServicios = Servicios.IDServicios
INNER JOIN Actividades ON NegSerAct.IDSerAct = Actividades.IDActividades
INNER JOIN Negocios ON NegSerAct.IDNegocio = Negocios.IDNegocio
WHERE NegSerAct.SemIniNegSerAct = selAnoSem
ORDER BY NegSerAct.IdNegocio;
</sql-code>

Saludos


> Estimados Bidegain y Ulises:
>
> parece que no me he sabido explicar bien mi problema.
>
> bueno, acabé no haciendo SQL, sino que cree una tabla nueva y en ella meti
> todo lo que necesitaba desde las cuatro tablas, y es la que leo para el
> Reporte. Esto trabaja al kilo.
>
> Despues voy a seguir investigando que le pasa a mi SQL anterior (parece
> que el INNER JOIN no esta bien), para aprender, pero ya el problema lo
> resolvi con la quinta tabla, que siempre la vacio al inicio y ocupa muy
> poco espacio en memoria.
>
> les agradezco la ayuda que tendre en cuenta para la revision posterior.
>
> saludos,
>
> Ing. Héctor F. Fiandor Rosario
> hfiandor en infomed.sld.cu
>
>
>
>
> --
>
> 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
>



--

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/





More information about the Lazarus-es mailing list