powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Иерархический запрос
6 сообщений из 6, страница 1 из 1
Иерархический запрос
    #39706980
reaque
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет.

Есть таблица, в которой описана иерархия.

Например,
id name parent {другие столбцы}
1 ПК null
2 Монитор 1
3 СисБлок 1
4 Лампы 2
5 БлокПит 2
6 Проц 3
7 ОЗУ 3
8 Матер 3
9 Видеока 3

Когда делаю запрос
select * from mytable
where {несколько условий}
and parent = 3

В результате запроса 4 строки.


Когда делаю запрос
select * from mytable
where {несколько условий}
start with parent = 3
connect by prior id = parent
;


В результате получаю 16 строк, причем каждые 4 строки абсолютно одинаковые.
Т.е. уникальных 4 строки, но общее количество строк в выводе 16.
Что я делаю не так?
...
Рейтинг: 0 / 0
Иерархический запрос
    #39706988
reaque
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Чуть обманул в последнем утверждении.

На самом деле так:


Когда делаю запрос
select * from mytable
where {несколько условий}
start with parent = 3
connect by prior id = parent
;
В результате получаю так же 4 строки

Но если сделать так:



16 строк, причем каждые 4 строки абсолютно одинаковые.
Т.е. уникальных 4 строки, но общее количество строк в выводе 16.
Что я делаю не так?
...
Рейтинг: 0 / 0
Иерархический запрос
    #39706989
reaque
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Удалите, пжлста, предыдущее сообщение, самостоятельно сделать не могу.
Извините.

Итак к делу:

Чуть обманул в последнем утверждении.

На самом деле так:


Когда делаю запрос
select * from mytable
where {несколько условий}
start with parent = 3
connect by prior id = parent
;
В результате получаю так же 4 строки

Но если сделать так:
select * from
(
select * from mytable
where {несколько условий}
start with parent = 1
connect by prior id = parent
) where paert = 3
;
В результате получаю 16 строк, причем каждые 4 строки абсолютно одинаковые.
Т.е. уникальных 4 строки, но общее количество строк в выводе 16.
Что я делаю не так?
...
Рейтинг: 0 / 0
Иерархический запрос
    #39707002
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
reaque,

Медитируй над сколько начальных точек дает start with parent_id = 1 и покажи в SQL*Plus как ты получил 16. Скорее всего mytable имеет то что ты нам не гооришь.

SY.
...
Рейтинг: 0 / 0
Иерархический запрос
    #39707069
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
reaqueselect * from
(
select * from mytable
where {несколько условий}
start with parent = 1
connect by prior id = parent
) where paert = 3
;Нет смысла донакладывать "where paert = 3" в надзапросе.
...
Рейтинг: 0 / 0
Иерархический запрос
    #39707082
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
reaque,

ето разные запросы, поетому и разный результат

гляньте на

select * from mytable
where {несколько условий}
start with parent = 1
connect by prior id = parent

и поймете почему так

зы
луче конечно сказать что Вы хотите получить в результате

.....
stax
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Иерархический запрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]