Опрос родителей без детей - PullRequest
1 голос
/ 01 августа 2011

У меня есть таблица меню, и я изо всех сил пытаюсь выбрать все родительские меню без ребенка.

SELECT  
CASE 
WHEN (SELECT COUNT(1) children
       FROM menu
       WHERE cod_idiom = 'EN'
       START WITH cod_menu_parent = m1.cod_menu
       CONNECT BY PRIOR cod_menu = cod_menu_parent ) = 0 THEN
      cod_menu
END x
FROM menu m1
WHERE m1.isSubMenu = 'T' 

* isSubMenu = 'T' означает, что он может (должен) иметь дочерние элементы, которые могут быть подменю или файлом.

Идея состояла в том, чтобы сначала запросить все подменю, получить их код меню, а затем выполнить команду CONNECT BY PRIOR для подсчета его дочерних элементов.

Приведенный выше запрос не дал ожидаемого эффекта, у вас, ребята, есть идеи?

1 Ответ

1 голос
/ 01 августа 2011
SELECT m1.cod_menu
    FROM menu m1
    WHERE NOT EXISTS(SELECT NULL 
                         FROM MENU m2 
                         WHERE m1.cod_menu = m2.cod_menu_parent)
        AND m1.isSubMenu = 'T'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...