Son las 9pm 10pm y sigo en el trabajo, todavía me queda un rato más porque algo me atrasó.
Yo trabajo con PL/SQL de Oracle y el problema era este: una página que ejecutaba un query devuelve un resultado y otra página que ejecuta otro query prácticamente igual pero que devuelve otro resultado.
Eran queries sencillos (a unas cuantas tablas), pero para poner las cosas más interesantes, los queries no eran exactamente iguales (uno devolvía un listado, así que tenía algún GROUP BY por ahí pero los resultados de los dos tenían que tener sentido),, además, uno de ellos era dinámico (así que tuve que “construirlo” al vuelo para probar).
Luego de quitar cosas que no vienen al caso (las columnas devueltas en el SELECT, y los GROUP BY) y armar el query dinámico, estos eran:
Query 1:
SELECT *
FROM cashdesk.np_payment_concept pc,
cashdesk.np_payment_order_detail pod,
cashdesk.np_payment_order po,
cashdesk.np_payment_document pd,
cashdesk.np_operation op
WHERE po.npstatus = '20'
AND pd.npstatus = '10'
AND op.npstatus = '10'
AND op.npoperation = '60'
AND op.npoperationtype = '10'
AND po.npcustomerid = 482473
AND pc.npconceptid = pod.npconceptid
AND pod.nppaymentorderdetid = po.nppaymentorderid
AND po.nppaymentorderid = pd.nppaymentorderid
AND pd.npoperationid = op.npoperationid
AND op.npoperationid > '3522'
AND TRUNC(op.npcreateddate) >= TRUNC(SYSDATE)
AND pc.npconcepttarget = '30'
El segundo query era este:
SELECT *
FROM cashdesk.np_payment_concept pc,
cashdesk.np_payment_order_detail pod,
cashdesk.np_payment_order po,
cashdesk.np_payment_document pd,
cashdesk.np_operation op
WHERE po.npstatus = '20'
AND pd.npstatus = '10'
AND op.npstatus = '10'
AND op.npoperation = '60'
AND op.npoperationtype = '10'
AND po.npcustomerid = 482473
AND pc.npconceptid = pod.npconceptid
AND pod.nppaymentorderid = po.nppaymentorderid
AND po.nppaymentorderid = pd.nppaymentorderid
AND pd.npoperationid = op.npoperationid
AND op.npoperationid > '3522'
AND TRUNC(op.npcreateddate) >= TRUNC(SYSDATE)
AND pc.npconcepttarget = '30'
¿Encuentran por qué es que no devuelven lo mismo? A mi me tomó un buen rato y la ayuda de 3 personas más. Al final tuve que copiarlos en dos archivos de texto y usar uno de esos programa para buscar diferencias.
Enviar a Linuxfera Entradas Relacionadas:
Posts RSS
Vía Email













Sin mirar hacer mucho esfuerzo por qeu ay tengo sueño, me inclino por el espacio antes de AND
Puñetera ‘T’, al final he tenido que coger también un programa que me de las diferencias.
joder, eso es heavy metal… jaja
Bueno, no era el espacio cerca al
AND(es un error mio al pegar el query en el post. Además los espacios en blanco de más no son considerados al procesarlo).Como bien dice Manuel, el error era este en el primer query:
La
detestá de más.nppaymentorderdetidsi es una columna de la tabla (por eso no arroja error) pero no viene al caso para la condición de este querySi que estaba escondido… =/