|
|
|
Прочитать часть дерева из таблицы
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Есть две таблицы: 1) в которой хранится дерево: create table tree_table( node_id number, parent_id number ); 2) и таблица в которой хранятся текстовые параметры для некоторых узлов дерева: create table tree_node_parameter( node_id number, parameter varchar2 ); Как вычитать из дерева только те ветви, которые содержат узлы с искомым параметром? Узел может быть где-то посередине ветки, но ветки содержащие такой узел надо вычитать полностью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2018, 08:28 |
|
||
|
Прочитать часть дерева из таблицы
|
|||
|---|---|---|---|
|
#18+
vochupin, Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2018, 08:40 |
|
||
|
Прочитать часть дерева из таблицы
|
|||
|---|---|---|---|
|
#18+
шК0ДЕР, Зачем ветку пилишь? Пользователь просил вычитывать полностью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2018, 09:17 |
|
||
|
Прочитать часть дерева из таблицы
|
|||
|---|---|---|---|
|
#18+
шК0ДЕР, насколько я понимаю это вычитывание веток от узла с параметром до корня. Сильно кривым бы выглядел union двух селектов: 1) от узла с параметром до корня 2) от узла с параметром к листам ? Мне просто надо полностью ветки до листов. PS: простите тупого жависта :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2018, 09:37 |
|
||
|
Прочитать часть дерева из таблицы
|
|||
|---|---|---|---|
|
#18+
with tree_table as (select 1 as node_id, null as parent_id from dual union all select 2, null from dual union all select 3, 1 from dual union all select 4, 1 from dual union all select 5, 2 from dual union all select 6, 2 from dual union all select 7, 3 from dual union all select 8, 3 from dual union all select 9, 5 from dual union all select 10, 5 from dual), tree_node_parameter as (select 4 as node_id, 'value 1' as parameter from dual union all select 6 as node_id, 'value 2' from dual union all select 5 as node_id, 'value 3' from dual union all select 10 as node_id, 'value 4' from dual) select t.node_id, t.parent_id, p.parameter, level from tree_table t left join tree_node_parameter p on p.node_id = t.node_id connect by prior t.parent_id = t.node_id start with p.parameter is not null ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2018, 09:50 |
|
||
|
Прочитать часть дерева из таблицы
|
|||
|---|---|---|---|
|
#18+
vochupin, веткі з ЗП = 3000 Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. .... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2018, 10:17 |
|
||
|
Прочитать часть дерева из таблицы
|
|||
|---|---|---|---|
|
#18+
Код: plsql 1. 2. 3. 4. 5. 6. 7. Если "условие" может отобрать несколько узлов одной ветви, записи задублируются с разным L. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2018, 11:18 |
|
||
|
Прочитать часть дерева из таблицы
|
|||
|---|---|---|---|
|
#18+
-2-, Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. заслепило, чет не могу найти из-за чего ORA-01722: invalid number ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2018, 11:37 |
|
||
|
Прочитать часть дерева из таблицы
|
|||
|---|---|---|---|
|
#18+
Stax, ето ж надо так очетятаться Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. немножко странно выглядит иерархия ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2018, 12:59 |
|
||
|
Прочитать часть дерева из таблицы
|
|||
|---|---|---|---|
|
#18+
Staxстранно выглядит иерархияне иерархия, сортировка Код: plsql 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2018, 14:34 |
|
||
|
Прочитать часть дерева из таблицы
|
|||
|---|---|---|---|
|
#18+
-2-Staxстранно выглядит иерархияне иерархия, сортировка Код: plsql 1. 2. 3. мало помогает, надо допиливать Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. .... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2018, 15:05 |
|
||
|
Прочитать часть дерева из таблицы
|
|||
|---|---|---|---|
|
#18+
Staxмало помогает, надо допиливать А теперь возьми общий случай когда у child > 1 parent. Тогда не то что допиливать - перекраивать надо. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2018, 16:20 |
|
||
|
Прочитать часть дерева из таблицы
|
|||
|---|---|---|---|
|
#18+
SYStaxмало помогает, надо допиливать А теперь возьми общий случай когда у child > 1 parent. Тогда не то что допиливать - перекраивать надо. SY. у одного дитя два родителя? должно работать 21270432 .... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2018, 16:56 |
|
||
|
Прочитать часть дерева из таблицы
|
|||
|---|---|---|---|
|
#18+
Stax, В emp у empno только один mgr. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2018, 17:47 |
|
||
|
Прочитать часть дерева из таблицы
|
|||
|---|---|---|---|
|
#18+
SYStax, В emp у empno только один mgr. SY. понятно что в емп нет (мне ж лень было набивать тестовую иерархию) Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2018, 18:19 |
|
||
|
Прочитать часть дерева из таблицы
|
|||
|---|---|---|---|
|
#18+
Stax, Ну и у какого empno в твоем примере два (или более) mgr? Еще раз - общий случай это когда и у начальника много подчиненных (это таблица emp и твой последний пример) и у подчиненного много начальников. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2018, 18:27 |
|
||
|
Прочитать часть дерева из таблицы
|
|||
|---|---|---|---|
|
#18+
SYStax, Ну и у какого empno в твоем примере два (или более) mgr? Еще раз - общий случай это когда и у начальника много подчиненных (это таблица emp и твой последний пример) и у подчиненного много начальников. SY. у b (ид 2) два начальника a и d зы не понимаю какие нужны тестовые данные ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2018, 18:32 |
|
||
|
Прочитать часть дерева из таблицы
|
|||
|---|---|---|---|
|
#18+
Упс - не заметил empno = 3. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2018, 18:37 |
|
||
|
Прочитать часть дерева из таблицы
|
|||
|---|---|---|---|
|
#18+
Stax, понял надо одинаковые ид для b Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. .... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2018, 18:37 |
|
||
|
Прочитать часть дерева из таблицы
|
|||
|---|---|---|---|
|
#18+
Stax, Ну это построение всей иерархии а затем выборка нужных строк что не есть оптимально/эффективно. Я имел ввиду выборку только нужных строк в случае когда у parent/child много child/parent. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2018, 18:44 |
|
||
|
Прочитать часть дерева из таблицы
|
|||
|---|---|---|---|
|
#18+
SYStax, Ну это построение всей иерархии а затем выборка нужных строк что не есть оптимально/эффективно. Я имел ввиду выборку только нужных строк в случае когда у parent/child много child/parent. SY. понятно что не оптімально, но другого я пока не придумал ps второй коннект бай можна наверное ограничить до узла из условия ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2018, 18:52 |
|
||
|
|

start [/forum/topic.php?fid=52&fpage=121&tid=1884268]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
45ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
40ms |
get tp. blocked users: |
2ms |
| others: | 250ms |
| total: | 379ms |

| 0 / 0 |
