Я пытаюсь найти дочерние узлы самого низкого уровня из таблицы иерархии, имеющие parent_node_id и child_node_id, как показано ниже.Он также возвращает дочерние узлы среднего уровня.Пожалуйста, помогите изменить этот запрос и добиться желаемого результата.
Пожалуйста, предложите преобразовать тот же запрос в Impala. Когда я выполняю этот запрос в HUE, он показывает ошибку - ссылка на tableR не найдена.
WITH tableR (parent_node_id, child_node_id)
AS (SELECT e.parent_node_id, e.child_node_id
FROM hierarchy e
WHERE parent_node_id IN (select parent_node_id from hierarchy)
UNION ALL
SELECT e.parent_node_id, e.child_node_id
FROM hierarchy e
INNER JOIN tableR d
ON e.parent_node_id = d.child_node_id
)
SELECT parent_node_id, child_node_id
FROM tableR
Исходная таблица:
+-------------+--------------+-------------+
|child_node_id|parent_node_id| child_desc |
+-------------+--------------+-------------+
| C1 | P1 | Private |
+-------------+--------------+-------------+
| C2 | P2 | Public |
+-------------+--------------+-------------+
| C11 | C1 | Party |
+-------------+--------------+-------------+
| C12 | C11 | Equity |
+-------------+--------------+-------------+
| 123 | C12 | Placement |
+-------------+--------------+-------------+
Ожидаемый результат:
+-------------+--------------+-------------+
|parent_node |lowest_l_child| child_desc |
+-------------+--------------+-------------+
| P1 | 123 | Placement |
+-------------+--------------+-------------+
| P2 | C2 | Public |
+-------------+--------------+-------------+
| C1 | 123 | Placement |
+-------------+--------------+-------------+
| C11 | 123 | Placement |
+-------------+--------------+-------------+
| C12 | 123 | Placement |
+-------------+--------------+-------------+