|
|
|
Иерархический запрос
|
|||
|---|---|---|---|
|
#18+
Всем привет. Есть таблица, в которой описана иерархия. Например, 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. Что я делаю не так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2018, 13:45 |
|
||
|
Иерархический запрос
|
|||
|---|---|---|---|
|
#18+
Чуть обманул в последнем утверждении. На самом деле так: Когда делаю запрос select * from mytable where {несколько условий} start with parent = 3 connect by prior id = parent ; В результате получаю так же 4 строки Но если сделать так: 16 строк, причем каждые 4 строки абсолютно одинаковые. Т.е. уникальных 4 строки, но общее количество строк в выводе 16. Что я делаю не так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2018, 13:50 |
|
||
|
Иерархический запрос
|
|||
|---|---|---|---|
|
#18+
Удалите, пжлста, предыдущее сообщение, самостоятельно сделать не могу. Извините. Итак к делу: Чуть обманул в последнем утверждении. На самом деле так: Когда делаю запрос 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. Что я делаю не так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2018, 13:52 |
|
||
|
Иерархический запрос
|
|||
|---|---|---|---|
|
#18+
reaque, Медитируй над сколько начальных точек дает start with parent_id = 1 и покажи в SQL*Plus как ты получил 16. Скорее всего mytable имеет то что ты нам не гооришь. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2018, 14:02 |
|
||
|
Иерархический запрос
|
|||
|---|---|---|---|
|
#18+
reaqueselect * from ( select * from mytable where {несколько условий} start with parent = 1 connect by prior id = parent ) where paert = 3 ;Нет смысла донакладывать "where paert = 3" в надзапросе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2018, 14:45 |
|
||
|
Иерархический запрос
|
|||
|---|---|---|---|
|
#18+
reaque, ето разные запросы, поетому и разный результат гляньте на select * from mytable where {несколько условий} start with parent = 1 connect by prior id = parent и поймете почему так зы луче конечно сказать что Вы хотите получить в результате ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2018, 14:54 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39706988&tid=1883427]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
43ms |
get topic data: |
12ms |
get forum data: |
4ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 251ms |
| total: | 384ms |

| 0 / 0 |
