У меня есть таблица с 3-уровневыми иерархическими данными, однако мой запрос неправильно классифицирует уровни.
Мой запрос:
SELECT t1.name AS lev1, t2.name as lev2, t3.name as lev3
FROM sds_test AS t1
LEFT JOIN sds_test AS t2 ON t2.parent_id = t1.ID
LEFT JOIN sds_test AS t3 ON t3.parent_id = t2.ID;
Категория Музейные и художественные школы получают дополнительный ряд, поскольку это категория высшего уровня, которую я хочу исключить. Если я поставлю уровень 2 не NULL, он испортит те категории, которые имеют один верхний уровень, например Авиация
Желаемый результат Музейно-художественная школа не должна относиться к категории высшего уровня и не должна иметь отдельного ряда для них.

Я не уверен, как решить эту проблему, поскольку CTE также дает мне аналогичные результаты. Я попытался использовать случай
case when parent_id = NULL then
что опять-таки не дает мне желаемых результатов.
SQL-запрос для восстановления таблицы:
create table sds_test (id int, name varchar(30), parent_id int);
insert into sds_test values(1, 'Educational Institute', NULL);
insert into sds_test values(2, 'Speciality Schools', 1);
insert into sds_test values(3, 'Arts School', 2);
insert into sds_test values(4, 'Restraunts', NULL);
insert into sds_test values(5, 'Asian Restraunts', 4);
insert into sds_test values(6, 'malasian Rest', 5);
insert into sds_test values(7, 'Recreational', NULL);
insert into sds_test values(8, 'Museum', 7);
insert into sds_test values(9, 'Aviation', NULL);