Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Как сделать различное начало дерева в зависимости от условия?  [new]
Muxx1986
Member

Откуда:
Сообщений: 59
Добрый день.

Интересует такой вопрос - как используя только средства SQL написать запрос, выводящий дерево, такой что условие на начало дерева зависит от переменной - если её значение NULL, то начало дерева определяется принадлежностью атрибута к фиксированному множеству чисел, а если нет, то равенством этой переменной (то есть в одном случае условие IN, а в другом =).

Подскажите,пожалуйста.
28 авг 07, 16:27    [4586904]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать различное начало дерева в зависимости от условия?  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
start with (:input_param is null and (<..> in <..>) or :input_param  is not null and (<..> = <..>))
Но ИМХО лучше использовать разные запросы, так как наверняка следующим шагом Вы задумаетесь о производительности.
28 авг 07, 16:35    [4586972]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать различное начало дерева в зависимости от условия?  [new]
Muxx1986
Member

Откуда:
Сообщений: 59
Спасибо, вроде все очень просто оказалось. С производительностью, конечно, не очень хорошо получается, может действительно придется делить на запросы. Но все равно спасибо.
28 авг 07, 16:45    [4587045]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать различное начало дерева в зависимости от условия?  [new]
SQL*Plus
Member

Откуда: Россия, Москва
Сообщений: 8131
Jannny
start with (:input_param is null and (<..> in <..>) or :input_param  is not null and (<..> = <..>))
Но ИМХО лучше использовать разные запросы, так как наверняка следующим шагом Вы задумаетесь о производительности.

Будут искаться корневые узлы деревьев по условию
(:input_param is null and (<..> in <..>)
или
:input_param  is not null and (<..> = <..>)
Значение :input_param сразу определяет какая именно часть условий будет использована...
Как именно это может сказаться на производительности?
28 авг 07, 17:22    [4587303]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать различное начало дерева в зависимости от условия?  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
SQL*Plus
Jannny
start with (:input_param is null and (<..> in <..>) or :input_param  is not null and (<..> = <..>))
Но ИМХО лучше использовать разные запросы, так как наверняка следующим шагом Вы задумаетесь о производительности.
Будут искаться корневые узлы деревьев по условию
(:input_param is null and (<..> in <..>)
или
:input_param  is not null and (<..> = <..>)
Значение :input_param сразу определяет какая именно часть условий будет использована...
Как именно это может сказаться на производительности?
В момент построения плана может быть решено не брать индекс.
28 авг 07, 17:39    [4587417]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить