• Sábado 18 de Mayo de 2024, 10:17

Autor Tema:  joins datatables en 1 data set  (Leído 927 veces)

ronald110

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
joins datatables en 1 data set
« en: Sábado 9 de Agosto de 2008, 17:33 »
0
Hola gentee sistemistica tengo 1 peqeña duda sqlee listicaa y no se x donde empezar..
me han pedido 1 reporte q vaya y saque las cartas de solicitud de los socios q qieren q se les devuelva sus aportes...
entonces voy 1 consulto la tabla carta renuncia y le hago 1 join con la tabla donde estan todos los contratos (un socio puede tener varios contratos x distintos servicios ) hasta  ahi vamos bien pero ademas de eso me han pedido otra serie de datos informativos como ser todas sus deudas , deudas x operador ,  facturas pendientes,  edad del socio de acuerdo a su fechnac ,
y weno ya la hice la consultaaa ahi lapongoo pa q vean q no es mentiraa :

SELECT /*+ RULE */ TO_CHAR(CAR.FECHA_CARTA,'dd/MM/yyyy')FECAREMI,
DECODE(CAR.ESTADO,'PRG','PROGRAMADA','EJE','EJECUTADA') ESTCAR,
CTO.SERCTO,(SELECT DESCRI FROM SISTEL.ESTCTO WHERE CODEST = CTO.ESTCTO) ESTCONT,
CTO.CODSOC,CTO.TIPSOC,CLI.PQ_MISC.GETNOMBRECOMPLETO(CTO.CODSOC) NOMCLI,
(SELECT TSE.VACCION FROM SISTEL.TSERIE TSE WHERE TSE.SERIE = SUBSTR(CTO.SERCTO,0,2)) VACCION,
CTO.APORTE APORTADO,
NVL(FLOOR((TRUNC(SYSDATE)-(SELECT CLI.FNAC FROM CLI.CLIPER CLI WHERE CLI.CODCLI = CAR.CODCLI))/365),0) EDAD,
(SELECT CLI.FNAC FROM CLI.CLIPER CLI WHERE CLI.CODCLI = CAR.CODCLI) FNAC,
NVL((SELECT SUM(AMT.APORTE_DIA) FROM AMTDIA AMT WHERE AMT.SERCTO=CTO.SERCTO AND ( AMT.ESTADO_AMT='PEND' OR AMT.ESTADO_AMT='TRAS')),0) AS APORCAJA,
NVL((SELECT SUM(CRD.IMPORTE) FROM CREDPEND CRD WHERE CRD.SERCTO_DDOR=CTO.SERCTO AND CRD.NRO_ITM='45' AND CRD.FECHA_PAGO IS NULL),0) AS APORFAC,
NVL((SELECT SUM(MTOTOTFAC) FROM NHDCOTAS WHERE ESTADO = 'PEN' AND SERCTO = CTO.SERCTO),0)TOTFAC,
NVL((SELECT SUM(MTOCOT) FROM NHDCOTAS WHERE ESTADO = 'PEN' AND SERCTO = CTO.SERCTO),0)TOTFACOT,
NVL((SELECT SUM(SISTEL.RECALCULO_DISPUESTO(NROFACINT)) FROM NHDCOTAS WHERE ESTADO='PEN' AND SERCTO=CTO.SERCTO),0)TOTFACOTINT,
NVL((SELECT SUM(MTOTLD) FROM NHDCOTAS WHERE ESTADO = 'PEN' AND SERCTO = CTO.SERCTO),0)TOTFACOT12,
NVL((SELECT SUM(MTOCOT+MTOTLC+MTOVIVA+MTOITS+MTOBTL+MTOENT+MTOAES+MTOBOSS+MTO16+MTOUNETE+MTOMEDES) FROM NHDCOTAS WHERE ESTADO = 'PEN' AND SERCTO = CTO.SERCTO),0)TOTOPERS
FROM SISTEL.CARTAREN CAR,SISTEL.CONTRATO CTO
WHERE CAR.SERCTO = CTO.SERCTO
AND CAR.ESTADO = 'PRG'

 
funciona , eso si tardaaa un momton en ORacle , y si lo llevo a sql reporting services q es con lo q trabaja la emrpesa tarda aun mas
tengo q ver la mejor forma de hacerlo y q no tarde mucho(x si acaso ya vi y estoy todas mis columnas de indices  ), mi jefe lo hizo en 4gl informix (el hombre no sabe C# ) lo q hace es 1 peqeña consulta entre cartas y contratos y almacenarlo en 1 puntero y luego ir a sacar los otros datos (como ser edad, deudas, valor d la accion , aportes ) con funciones de acuerdo a un nro de contrato

y weno si no me equivoco en .net c# 2005 en vez d punteros se usa datatables ?
entonces pensaba hacer eso crearme unos 3 datatables y hacerles join entre ellos cosa q obtenga 1 datagrid con el resultado de los joins , q les parece la idea?
tardaria menos hacerlo asi ?
alguna mejor sugerenciaa?
puedo usar 1 stored procedure??
aver colegas espero q me haya echo entender ...
muchas gracias de antemano ante 1 posible respuestaa
Comparte y Aprenderas !!!