Buscando una respuesta en Google, di con esta página que desconocía hasta el momento y me ha parecido interesante...
Verán, mi problema es con una consulta SQL, tengo dos tablas relacionadas entre sí:
Código:
El tema es el siguiente: la cantidad real de un ítem de la tabla A es la sumatoria de los registros B_CANTIDAD_REAL relacionados. Ahora bien, si no hay ningún registro en la tabla B relacionado con la tabla A, el valor que vale (aunque no sea el real, sino un estimado) es el de A_CANTIDAD.A B ******** ******** A_CODIGO B_CODIGO A_CANTIDAD A_CODIGO A_BORRADO B_CANTIDAD_REAL B_BORRADO
Así, si quisieramos hacer un resumen del tipo:
Código:
en ocasiones la cantidad la tomaría de A_CANTIDAD, y en otras de la sumatoria de B_CANTIDAD_REAL.CODIGO CANTIDAD ****** ******** 000001 236 000002 568 000003 1236
He aquí la pregunta: ¿Cómo puedo, mediante una consulta SQL, hacer que me traiga dicha información?
He intentado varias soluciones pero no me resulta ninguna... por ejemplo:
1.- Debido a que utilizo Interbase 6 no dispongo de la cláusula CASE...
2.- He probado con un UNION ALL, así:
Código:
Si bien ambas consultas me funcionan por separado, al unirlas me da el error de "tipo de dato desconocido". Los campos a_cantidad y b_cantidad_real son de tipo Integer, pero imagino que al hacer la sumatoria y agrupamiento, algo pasa que no puedo hacer la unión.select a_codigo, a_cantidad from a where a_borrado=0 and a_codigo not in (select a_codigo from b where b_borrado=0) union all select a_codigo, sum (b_cantidad_real) as suma from b where b_borrado=0 group by a_codigo
Agradezco de antemano, cualquier ayuda que me puedan dar con la consulta...