|
|
|
как скопировать дерево?
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! есть деревянная табличка tab с полями id, parent_id, name, type_id и нужно в этой же таблице все записи, где type_id=1 скопировать и присвоить всем новым записям type_id=2. Из-за деревянности таблицы получается это как-то непросто. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2015, 08:34 |
|
||
|
как скопировать дерево?
|
|||
|---|---|---|---|
|
#18+
PG81, Код: sql 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2015, 09:15 |
|
||
|
как скопировать дерево?
|
|||
|---|---|---|---|
|
#18+
PG81Здравствуйте! есть деревянная табличка tab с полями id, parent_id, name, type_id и нужно в этой же таблице все записи, где type_id=1 скопировать и присвоить всем новым записям type_id=2. Из-за деревянности таблицы получается это как-то непросто. Скрипт бы таблицы... Ограничения на поля есть ? А то просто хочу и все... Что пробовал сам ? Какое сообщение об ошибке ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2015, 09:28 |
|
||
|
как скопировать дерево?
|
|||
|---|---|---|---|
|
#18+
Владимир СА, я думал известная проблема)) Скрипт добавления таблицы и данных Код: sql 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. Ну вот... а теперь нужно все эти записи еще раз добавить в эту же таблицу только поставить type_id проставить 2 соответственно поменяются ID и Parent_id нужно уже новые проставлять. у меня пока получилось для 2х-уровнего джерева (добавляем корень, потом каждому корню его детей с уже новым ID корня) для многоуровнего дерева по идее нужно делать так, нужно все записи, где type_id=1 загнать во временную таблицу, а потом уже в цикле как-то вставлять все это мне показалось это как не эффективно, и поэтому я решил посоветоваться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2015, 10:30 |
|
||
|
как скопировать дерево?
|
|||
|---|---|---|---|
|
#18+
PG81, id+11, parent_id+11 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2015, 11:23 |
|
||
|
как скопировать дерево?
|
|||
|---|---|---|---|
|
#18+
PG81Владимир СА, я думал известная проблема)) Скрипт добавления таблицы и данных Код: sql 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. Ну вот... а теперь нужно все эти записи еще раз добавить в эту же таблицу только поставить type_id проставить 2 соответственно поменяются ID и Parent_id нужно уже новые проставлять. у меня пока получилось для 2х-уровнего джерева (добавляем корень, потом каждому корню его детей с уже новым ID корня) для многоуровнего дерева по идее нужно делать так, нужно все записи, где type_id=1 загнать во временную таблицу, а потом уже в цикле как-то вставлять все это мне показалось это как не эффективно, и поэтому я решил посоветоватьсяINSERT-ы не должны пройти, т.к. Код: sql 1. Сначала надо убрать ссылку на сиквенс Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2015, 11:54 |
|
||
|
как скопировать дерево?
|
|||
|---|---|---|---|
|
#18+
Или по одному INSERT-у вставлять... ориентируясь на результаты вставки... ID... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2015, 12:28 |
|
||
|
как скопировать дерево?
|
|||
|---|---|---|---|
|
#18+
Владимир САСначала надо убрать ссылку на сиквенс Код: sql 1. Дефолт не констрейнт, чтобы молиться на него. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2015, 12:35 |
|
||
|
как скопировать дерево?
|
|||
|---|---|---|---|
|
#18+
p2.Владимир САСначала надо убрать ссылку на сиквенс Код: sql 1. Дефолт не констрейнт, чтобы молиться на него.Сиквенс все равно надо менять... он при дальнейших вставках даст сбой... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2015, 12:45 |
|
||
|
как скопировать дерево?
|
|||
|---|---|---|---|
|
#18+
PG81, впринципе... записи вставятся... Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Но надо редактировать сиквенс, как я сообщал... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2015, 13:45 |
|
||
|
как скопировать дерево?
|
|||
|---|---|---|---|
|
#18+
Владимир СА Код: sql 1. a recursive зачем?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2015, 14:40 |
|
||
|
как скопировать дерево?
|
|||
|---|---|---|---|
|
#18+
p2.Владимир СА Код: sql 1. a recursive зачем?!Я просто из примера взял... и смоделировал на данную таблицу... все отработало хорошо... Ну, если не надо, так не надо... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2015, 14:57 |
|
||
|
как скопировать дерево?
|
|||
|---|---|---|---|
|
#18+
p2.Владимир СА Код: sql 1. a recursive зачем?!патамушта гладиолус ну вы, блин, даёте. это же отбор поддеревьев для переноса. вот взяли "только нужные корешки", обошли всё от них (ну там еще какой-то фильтр забыли WHERE type_id=1; --авно вапрос ) и только требуемое и пересадили. а то, что конкретно в тест--кейсе больше ничего и нет -- это не факт. мне тут больше интересно - может ли дерево перемежаться -- одна ветка type_id=1;, а вторая -- совсем даже напротив type_id=2; а третья -- так и вообще type_id=0; -- и что тогда аффтар будет делать. пересаживать дерево целиком, или вырезку из оного ? а оно и не срастётся ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2015, 15:23 |
|
||
|
как скопировать дерево?
|
|||
|---|---|---|---|
|
#18+
qwwqну там еще какой-то фильтр забыли WHERE type_id=1; --авно вапрос ) В присутствие дырок в дереве как бы думать придется, но это к автору... Гадалки склоняются не к WHERE, а CASE. А пока он не обременен раздумьями, нужно ли изобретать сложности? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2015, 15:39 |
|
||
|
как скопировать дерево?
|
|||
|---|---|---|---|
|
#18+
Вариант Владимира Владимир САPG81, впринципе... записи вставятся... Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Но надо редактировать сиквенс, как я сообщал... такой вариант не подойдет если кто-то еще в этот же момент будет копировать такое же дерево ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2015, 15:47 |
|
||
|
как скопировать дерево?
|
|||
|---|---|---|---|
|
#18+
qwwq, Что вы имеете ввиду "дерево перемежаться"? Если как я понял, что ветки одного типа могут ссылаться на ветки другого типа, то такого по моим условиям не может быть никогда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2015, 15:49 |
|
||
|
как скопировать дерево?
|
|||
|---|---|---|---|
|
#18+
PG81, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2015, 15:56 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=38940429&tid=1998034]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
165ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 211ms |
| total: | 454ms |

| 0 / 0 |
