CONNECT_BY_ISLEAF с условиями - PullRequest
2 голосов
/ 27 мая 2009

Надеюсь, что кто-то может мне помочь - иметь иерархическую настройку на столе, используя целые предложения START WITH и CONNECT BY, которые я использую для настройки системы меню с вертикальной ориентацией, которая может расширяться справа, в зависимости от того, есть ли у пункта меню дочерние элементы и общее количество уровней. Также, как часть опции меню, если у родителя есть дети, я также отображаю символ '>', чтобы указать это.

Мой вопрос, я использую CONNECT_BY_ISLEAF, чтобы определить, является ли пункт меню листом или нет, но у меня также есть столбец в моей иерархической таблице, который указывает, активен ли параметр меню или нет.

Поэтому, когда в моем меню есть случай настройки родительского / дочернего, так что значение ISLEAF для Parent равно 0, а Child равно 1, но я на самом деле сделал опция дочернего меню неактивна, мой символ '>' по-прежнему отображается на родительском уровне, даже если дочерняя запись для этого родителя неактивна.

Есть идеи, как я могу проверить это вместе со значением CONNECT_BY_ISLEAF, чтобы предотвратить появление символа '>', даже если этот параметр родительского меню имеет неактивную дочернюю запись?

В основном нужно что-то, что, если дочерняя запись существует на основе значения ISLEAF, но дочерняя запись неактивна, игнорируйте эту конечную запись и притворитесь, что ее на самом деле не существует.

Надеюсь, это имеет смысл.

Спасибо. TT.

1 Ответ

3 голосов
/ 27 мая 2009
SELECT  *
FROM    table
CONNECT BY
        parent = PRIOR id
        AND active = 1

Это выберет ребенка, только если он активен, если вы этого хотите.

Обратите внимание, что этот запрос вернет CONNECT_BY_ISLEAF = 1 для элементов, у которых нет активных потомков, и они, вероятно, будут рассматриваться как конечные точки в вашем проекте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...