SP
select *
from n
left join y on y.n_id = n.id
left join x on x.n_id = n.id
where (y.active is null and x.active is null) or
(y.active is null and x.active = false) or
(y.active = false and x.active is null)
group by n.id
Size: a a a
SP
select *
from n
left join y on y.n_id = n.id
left join x on x.n_id = n.id
where (y.active is null and x.active is null) or
(y.active is null and x.active = false) or
(y.active = false and x.active is null)
group by n.id
RV
NB
SP
NB
IZ
NB
select
n.id,
array_cat(array_agg(y.active), array_agg(x.active))
from
n
left join y on y.n_id = n.id
left join x on x.n_id = n.id
group by n.id
having (array_cat(array_agg(y.active), array_agg(x.active)) = ARRAY[]::bool[]) or
(array_cat(array_agg(y.active), array_agg(x.active) @> ARRAY[false]::bool[] and not
array_cat(array_agg(y.active), array_agg(x.active) @> ARRAY[true]::bool[])
NB
RV
NB
NB
IZ
IZ
select
n.id,
array_cat(array_agg(y.active), array_agg(x.active))
from
n
left join y on y.n_id = n.id
left join x on x.n_id = n.id
group by n.id
having (array_cat(array_agg(y.active), array_agg(x.active)) = ARRAY[]::bool[]) or
(array_cat(array_agg(y.active), array_agg(x.active) @> ARRAY[false]::bool[] and not
array_cat(array_agg(y.active), array_agg(x.active) @> ARRAY[true]::bool[])
NB
NB
NB
NB
NB