Os planteo el siguiente problema. Tengo dos tablas y quiero obtener a partir de una sentencia sql (oracle) que si en ninguna de las dos hay registros dada una condición me devuelva un número diferente de cero. Explicándolo con un ejemplo:
tenemos las tablas A y B
No existen registros ni en la tabla A ni en la B --> resultado: (error) faltan registros (consulta devuelve valor diferente de cero)
Existen registro en A y B; Existen registros en A pero no en B; Existen registros en B pero no en A ---> resultado: (correcto) no faltan registros (consulta devuelve cero)
Tengo la select que funciona; pero no es optima
Código PHP:
SELECT
DECODE
(
(SELECT count(*)
FROM
ALARMAS_USUARIOS ALUAUX
WHERE
ALUAUX.IDEALP = 1
AND ALUAUX.IDEALA = 82
)
+
(
SELECT count(*)
FROM
ALARMAS_OFICINAS ALOAUX
WHERE
ALOAUX.IDEALP = 1
AND ALOAUX.IDEALA = 82
), 0,1,0
) CONTIENE_REGISTROS
from dual
Cita:
El problema es que si una de las consultas no tiene registros y no devuelve resultados hay casos en los que no me lo hace bien; podéis comprobar que algo sumado a null da null...Para comprobar si existen registros para cierta condición, no se debe hacer un SELECT COUNT(*) FROM X WHERE xxx, sino que se hace un SELECT DISTINCT 1 FROM X WHERE xxx. De este modo evitamos al servidor que cuente los registros.
Código PHP:
elect 1+null from dual
¿alguien ve alguna alternativa mejor? Está claro que usando el count(*) me recorre toda la tabla y yo lo que quiero es que cuando se cumpla la condición de encontrar un registro, deje de recorrerla.
gracias!