У меня есть таблица базы данных "Категория", которая может иметь ссылку на себя. Если ссылка на себя имеет значение null, то это категория верхнего уровня (без родителя). Если он указывает на другую категорию, это подкатегория данной категории.
Теперь я пытаюсь настроить запрос, который возвращает все подкатегории с заданным идентификатором родительской категории. Что-то вроде следующего (синтаксис Android Room):
"SELECT * FROM category WHERE parent_id = :parentId"
Этот запрос ничего не возвращает, если parentId == null, но я хотел бы, чтобы он возвращал все категории, где parentId == null (т.е. категории верхнего уровня). С запросом
"SELECT * FROM category WHERE parent_id IS NULL"
Я могу успешно получить родительские категории, но, очевидно, это не работает для подкатегорий.
Я также попробовал следующий запрос
"SELECT * FROM category WHERE (parent_id IS NULL OR parent_id = :parentId)
но это, конечно, терпит неудачу, поскольку всегда возвращает категории верхнего уровня, хотя намерение состоит в том, чтобы получить только определенный набор подкатегорий.
Мой вопрос в том, как я могу настроить свой запрос так, чтобы он работал должным образом, т.е. возвращал все категории верхнего уровня, когда parentId == null, в противном случае он возвращает все подкатегории данного идентификатора категории.