MySQL Forums
Forum List  »  Spanish

diferencia entre querys
Posted by: Francisco Pastrana
Date: July 24, 2013 04:47PM

Hola!

Tengo grupo de tres querys unidos (union) que "en teoria" realizan bien su tarea, me pidieron simplificar esos querys y hacerlos mas pequeños de tal manera que sea mas entendible y principalmente trabaje mejor sin embargo supuestamente lo hice pero me regresa mas registros y esos registros de mas son por que traigo registros duplicados, me podrán ayudar no encuentro en que estoy mal. Cabe mencionar que la diferencia es poca pues son unicamente 200 registros de mas que traigo yo de un grupo de 26000 registros en total, todos los demás están bien.

Desafortunadamente no puedo traerme la estructura de las tabla por que no tengo permisos mas que para hacer select en esa base de datos.

Muchas gracias por apoyarme!

QUERY ORIGINAL
SELECT 'Tarj',A.CVE_ESTATUSTXN,A.FEC_TRANSACCION,A.NOM_BENEFICIARIO,
A.NUM_CLIENTE,A.NUM_CUENTA,A.CVE_ESTATUSTXN,A.NUM_PREFIJOCUENTA,
A.NUM_SUCPROMTORACTA,A.CVE_NUMEJEUNO,A.CVE_TIPOCUENTA,A.CVE_NUMEJEDOS,
A.IMP_TRANSACCION,A.CVE_NATURLEZARCHVO,B.NUMCLIENTE AS Clte_Cta,
B.PREFMDA as Suc_Bin,B.CUENTAMDA Cta_Tarj,C.NOMBRE as Nombre,
B.CUENTABASICA as Basica_Tarj
FROM C.FZ2S274BITV2 A
LEFT JOIN C.LA1MDA B
ON A.NUM_PREFIJOCUENTA = B.PREFMDA
AND A.NUM_CUENTA=B.CUENTAMDA
LEFT JOIN C.LA1CTE C
ON B.NUMCLIENTE=C.NUMCLIENTE
WHERE A.NUM_CLIENTE=3873540
AND A.CVE_TIPOCUENTA=3
UNION
SELECT 'Chqs',A.CVE_ESTATUSTXN,A.FEC_TRANSACCION,A.NOM_BENEFICIARIO,
A.NUM_CLIENTE,A.NUM_CUENTA,A.CVE_ESTATUSTXN,A.NUM_PREFIJOCUENTA,
A.NUM_SUCPROMTORACTA,A.CVE_NUMEJEUNO,A.CVE_TIPOCUENTA,A.CVE_NUMEJEDOS,
A.IMP_TRANSACCION,A.CVE_NATURLEZARCHVO,B.NUMCLIENTE AS Clte_Cta,
B.PREFMDA as Suc_Bin,B.CUENTAMDA Cta_Tarj,C.NOMBRE as Nombre,
B.CUENTABASICA as Basica_Tarj
FROM C.FZ2S274BITV2 A
LEFT JOIN C.LA1MDA B
ON A.NUM_SUCPROMTORACTA = B.PREFMDA
AND A.NUM_CUENTA=B.CUENTAMDA
LEFT JOIN C.LA1CTE C
ON B.NUMCLIENTE=C.NUMCLIENTE
WHERE A.NUM_CLIENTE=3873540
AND A.CVE_TIPOCUENTA=1
UNION
SELECT 'Interb_Serv_OP',A.CVE_ESTATUSTXN,A.FEC_TRANSACCION,
A.NOM_BENEFICIARIO,A.NUM_CLIENTE,A.NUM_CUENTA,A.CVE_ESTATUSTXN,
A.NUM_PREFIJOCUENTA,A.NUM_SUCPROMTORACTA,A.CVE_NUMEJEUNO,
A.CVE_TIPOCUENTA,A.CVE_NUMEJEDOS,A.IMP_TRANSACCION,A.CVE_NATURLEZARCHVO,
0 AS Clte_Cta,
0 AS Suc_Bin,
0 AS Cta_Tarj,
' ' AS Nombre,
' ' AS Basica_Tarj
FROM C.FZ2S274BITV2 A
WHERE A.NUM_CLIENTE=3873540
AND A.CVE_TIPOCUENTA NOT IN(1,3)


MI QUERY
SELECT A.CVE_ESTATUSTXN,A.FEC_TRANSACCION,A.NOM_BENEFICIARIO,A.NUM_CLIENTE,
A.NUM_CUENTA,A.CVE_ESTATUSTXN,A.NUM_PREFIJOCUENTA,A.NUM_SUCPROMTORACTA,A.CVE_NUMEJEUNO,
A.CVE_TIPOCUENTA,A.CVE_NUMEJEDOS,A.IMP_TRANSACCION,A.CVE_NATURLEZARCHVO,B.NUMCLIENTE AS Clte_Cta,
B.PREFMDA as Suc_Bin,B.CUENTAMDA Cta_Tarj,C.NOMBRE as Nombre,B.CUENTABASICA as Basica_Tarj,
CASE
WHEN A.CVE_TIPOCUENTA=3 THEN 'Tarj'
WHEN A.CVE_TIPOCUENTA=1 THEN 'Chqs'
ELSE 'Interb_Serv_OP'
END AS TIPO
FROM C.FZ2S274BITV2 A
LEFT JOIN C.LA1MDA B
ON A.NUM_CUENTA=B.CUENTAMDA
AND (A.NUM_PREFIJOCUENTA = B.PREFMDA OR A.NUM_SUCPROMTORACTA = B.PREFMDA)
LEFT JOIN C.LA1CTE C
ON B.NUMCLIENTE=C.NUMCLIENTE
WHERE A.NUM_CLIENTE=3873540

Options: ReplyQuote


Subject
Views
Written By
Posted
diferencia entre querys
7444
July 24, 2013 04:47PM
787
July 25, 2013 10:01AM
1285
July 25, 2013 11:38AM


Sorry, you can't reply to this topic. It has been closed.

Content reproduced on this site is the property of the respective copyright holders. It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.