Hola
Tampoco habia usado nunca el
EXISTS, lo he mirado un poco en la documentación del MSSQL y me parece muy curiosa su sintaxis (La verdad es que no acabo de entenderla, no se indican los campos a comparar). Es bastante más comprensible el operador relacionado
ANY.
Mirandolo bien, no creo que puedas usar el LEFT OUTER JOIN. Si la tabla relacionada (la Y) puede tener varios registros relacionados con la maestra X, y algunos de ellos marcan la operación como permitida y otras como no permitida, entonces el LEFT OUTER JOIN nos va a dejar pasar los registros de esa operación en X, puesto que cumplirán la condición cuando la unión se realize con los registros marcados como permitidos en Y.
Me parece que la única alternativa es utilizar una subconsulta, aunque puede ser un poco más sencilla de la que proponias :
Código:
Select *
From X
Where datepart(dy, Fecha) = datepart(dy, getdate()) and
IdAccion not in (select IdAccion from Y where Permitido = 0)
¿ Que te parece esta solución ?
Saludos.