Допустим, у меня есть черновик таблицы: у каждого родителя есть уникальный идентификатор, и для его родительского столбца установлено нулевое значение.
draft:
id | parent_id | is_deleted
--- ------------ ------------
1 | null | 0
2 | 1 | 0
3 | 1 | 1
4 | null | 0
5 | 4 | 1
6 | 4 | 1
7 | 4 | 0
8 | null | 0
9 | 8 | 1
Теперь я хочу получить список родителейтолько все их удаляются.
select id
from draft
where id in (
select parent_id
from draft
where id in (1, 2, 3, 5, 7, 9)
group by parent_id
having sum(case when is_deleted 0 then 1 else 0) <= 0
)
where is_deleted = 0;
Проблема здесь в том, что он всегда возвращает 1, 4 и 8 родителя. Но он должен возвращать только 8.
ОБНОВЛЕНИЕ: я хочу родительскую строку, а не родительский идентификатор.