|
|
|
Help! Нужен алгоритм совсем не по дереву...
|
|||
|---|---|---|---|
|
#18+
Есть ID_ITEM_CONTAINER, ID_ITEM - составной PK, и поле PRICE. Сам ID_ITEM_CONTAINER тоже может входить как ID_ITEM в другой ID_ITEM_CONTAINER. Т е имеем 2-е таблицы: 1. ITEM ------------- ID_ITEM ........... ------------- 2. ITEM_CONTAINER ------------- ID_ITEM_CONTAINER ID_ITEM Эти ^ 2-поля - составной первичный ключ и оба внешние к ITEM PRICE (суммарная цена всех его итемов (ID_ITEM)) ........... ------------- Нужно при изменении PRICE пересчитать все значения в PRICE, всех ID_ITEM_CONTAINER-ов куда он входит и куда входят сами ID_ITEM_CONTAINER и т д до каждого корня из ответвлений. Это для простоты можно представить как дерево с перекрещивающимися ветками и с возможностью одной ветки иметь два родителя. Родитель не может быть итемом сам для себя и все другие итемы куда он входит как итем тоже не должны. Сделал проц, дергаю ее из триггеров. Проц пересчитывает и апдейтит только самый 1-й уравень выше. Думал триггеры все сделают сами. Но происходи зацикл. Посоветуйте, что-либо. Мозг уже опух((( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2014, 17:16 |
|
||
|
Help! Нужен алгоритм совсем не по дереву...
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2014, 17:27 |
|
||
|
Help! Нужен алгоритм совсем не по дереву...
|
|||
|---|---|---|---|
|
#18+
D@lexРодитель не может быть итемом сам для себя и все другие итемы куда он входит как итем тоже не должны. Но происходи зацикл. Значит отквоченное условие не выполняется и где-то в твоём графе есть цикл. Вернись на стадию проектирования БД или даже к анализу предметной области, поскольку данная схема неработоспособна. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2014, 17:35 |
|
||
|
Help! Нужен алгоритм совсем не по дереву...
|
|||
|---|---|---|---|
|
#18+
D@lex, лучше приведи DDL таблицы и её ключей PK и FK. И таки зря ты составной ПК сделал. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2014, 17:38 |
|
||
|
Help! Нужен алгоритм совсем не по дереву...
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2014, 17:41 |
|
||
|
Help! Нужен алгоритм совсем не по дереву...
|
|||
|---|---|---|---|
|
#18+
Структура CREATE TABLE SRV_ITEMS ( ID_ITEM INTEGER NOT NULL ... ) CREATE TABLE COMPOUND_SRV_ITEMS ( ID_COMPOUND_ITEM INTEGER NOT NULL, ID_ITEM INTEGER NOT NULL, NUMBER DOUBLE PRECISION NOT NULL, COMPOUND_PRICE NUMERIC(15, 4), CALC_COMPOUND_PRICE COMPUTED BY (NUMBER * coalesce(COMPOUND_PRICE, 0)) ); ALTER TABLE COMPOUND_SRV_ITEMS ADD PRIMARY KEY (ID_COMPOUND_ITEM, ID_ITEM); -- foreign ALTER TABLE COMPOUND_SRV_ITEMS ADD FOREIGN KEY (ID_COMPOUND_ITEM) REFERENCES SRV_ITEMS (ID_ITEM) ON DELETE CASCADE; ALTER TABLE COMPOUND_SRV_ITEMS ADD FOREIGN KEY (ID_ITEM) REFERENCES SRV_ITEMS (ID_ITEM) ON DELETE CASCADE; Данные замечательно хранятся и структура рабочая. А вот с пересчетом беда... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2014, 17:47 |
|
||
|
Help! Нужен алгоритм совсем не по дереву...
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2014, 17:52 |
|
||
|
Help! Нужен алгоритм совсем не по дереву...
|
|||
|---|---|---|---|
|
#18+
Тут картинка с данными в COMPOUND_SRV_ITEMS http://prntscr.com/4e08gr ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2014, 17:53 |
|
||
|
Help! Нужен алгоритм совсем не по дереву...
|
|||
|---|---|---|---|
|
#18+
Текст процедуры, вызывается после апдейта т COMPOUND_SRV_ITEMS: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2014, 18:02 |
|
||
|
Help! Нужен алгоритм совсем не по дереву...
|
|||
|---|---|---|---|
|
#18+
D@lexструктура рабочая. А вот с пересчетом беда... Оксюморон. Если с запросами беда, значит структура неправильная. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2014, 19:27 |
|
||
|
Help! Нужен алгоритм совсем не по дереву...
|
|||
|---|---|---|---|
|
#18+
D@lex, Можно по-человечески сказать что за объекты и т.д. Услуги или прайс, как что построено? Что это выражает в предметной области? Т.е. постановка задачи в нормальных понятиях... Какие-то итемы, контейнеры, перекрещивающиеся ветки - что это значит. Ломать мозги над какими-то структурами, тем более возможно неправильно построенными навряд ли кто-то будет. Я сам занимаюсь бухгалтерией и тому подобными вещами, да и многие в этой области так или иначе работают... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2014, 20:02 |
|
||
|
Help! Нужен алгоритм совсем не по дереву...
|
|||
|---|---|---|---|
|
#18+
Хересе мастодонты повылазили... :) Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2014, 22:49 |
|
||
|
Help! Нужен алгоритм совсем не по дереву...
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов РустамХересе мастодонты повылазили... :) Да сам сейчас с деревом воюю, на mysql правда... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2014, 04:49 |
|
||
|
Help! Нужен алгоритм совсем не по дереву...
|
|||
|---|---|---|---|
|
#18+
barry, сочувствую. У mysql с обработкой иерархий всё плохо... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2014, 06:49 |
|
||
|
Help! Нужен алгоритм совсем не по дереву...
|
|||
|---|---|---|---|
|
#18+
Симонов Дениссочувствую. У mysql с обработкой иерархий всё плохо...Почему плохо? Смотря на какой структуре остановиться. Если традиционный child-parent, то наверное да... но есть же и другие модели. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2014, 19:33 |
|
||
|
|

start [/forum/topic.php?fid=40&fpage=90&tid=1563369]: |
0ms |
get settings: |
6ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
28ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
| others: | 199ms |
| total: | 299ms |

| 0 / 0 |
