Tengo un problema que me esta quemando la cabeza al intentar resolver este query:
La consulta debe retornar todos los datos de la tabla A, que contengan registros relacionados de la tabla B, y los registros de esta tabla B no deben existir en la tabla C, o si existen, que contentan al menos uno de los campos habilitados en FALSE:
Aqui la estructura aproximada de las tablas:
Tabla A:
ID -------- nombre ---------fecha_inicio
Tabla B:
ID-------ID_tablaA---------Habilitado
Tabla C:
ID--------ID_tablaB------Habilitado------Fecha_inicio-----Hora_inicio
Para hacerlo mas dificil, luego esta consulta debo implementarla en HQL.
Lo mas aproximado que estuve, fue con los siguientes intentos:
select distinct a.* from tabla1 a inner join tabla2 b on a.id = b.id_tablaA where 1=1 and b.id not in(select c.id_tabla2 from tabla3 c) or b.id in (select c.id_tabla2 from tabla3 c where c.habilitado=0)
o con esta otra
select distinct a from tabla1 a inner join tabla2 b on a.id=b.id_tablaA left join tabla3 c on b.id=c.id_tabla2 where b.id not in (select d.id_tabla2 from tabla3 d where d.habilitado=1)
Graciassss!!!!