У меня следующие таблицы. Столбец типа в таблице T1 следует иерархии из таблицы T2. Я хочу перечислить типы для имени в таблице T1 и найти лист для имени.Найти листовой узел на группу в иерархическом дереве
T1 T2
name type type parent
---------------- --------------------
a1 person | artist person
a1 artist | actor artist
a2 person | athlete person
a2 athlete | person ''
a3 person
a3 artist
a3 actor
Обычный запрос, чтобы найти узлы листа для одного имени не будет работать здесь
select a.* from T1 a left join T2 b on a.type = b.parent where b.parent is null;
a2 athlete
a3 actor
но я ищу этот вывод (лист узла на имя группы)
a1 artist
a2 athlete
a3 actor
другими словами, я хочу найти листовой узел на имя, поэтому в случае a1 листовой узел между [человеком, художником] будет художником, а для a3 [person, artist, actor] он будет актером.
есть способ использовать GROUP BY и получить желаемый результат
Вам нужно чтобы объяснить, что вы подразумеваете под самым удаленным узлом. – DVT
Просто переписал вопрос. Надеюсь, это немного яснее. – user1848018
Это mysql или sql-сервер? Ваш вопрос отмечен обоими. –