Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
12.02.2006, 04:55
|
|||
|---|---|---|---|
|
|||
while в plpgsql - нужна помощь |
|||
|
#18+
В обем суть вопроса: Я поднимаю каталог товаров. У меня есть категории cat_id - id-шник категории cat_name - ее название parent_id - id родительской категории childs_num - число вложенных категорий Есть товары id_item name price desc есть таблица связей items_to_cat id_cat id_item is_real boolean - указывает тип связи(0 виртуальный - то есть товар формально принадлежит категории, но реально относится к одному из потомков данной категории, 1 - относится фактически) Суть в том, что допустим вначале была такая структура категорий товары -принтеры -комплектующие Потом произошла ситация товары -комплектующие --принтеры -другие комплектующие то есть для категории принтеры изменился parent_id для комплектующие - childs_num+1 для товары childs_num-1 Надо перебить items_to_cat: Как я вижу алгоритм: 1. убрать связи товара из принтеров из категории товары(и ее родителей, до тех пор, пока par_id!=0) 2. Для категории комплектующие(и ее родителей, вплоть до тех, где Par_id=0) проставить виртуальную связь. Я понимаю, что: 1. Триггер должен стартовать от категории on update 2. Что надо спросить old.par_id и занести его в переменную 3. ДО тех пор, пока par_id>0 убирать связь (items_to_cat) 4. То же самое, но устанавливать связь для new.par_id НО я абсолютно не могу понять как это поднять на plpgsql В мануале я не нашел примера с while, ка реализовать цикл Помогите пожалуйста синтаксисом while И еще: не могли бы вы мне подсказать, нет будет ли у меня в данном цикле бесконечной рекурсии? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.02.2006, 04:58
|
|||
|---|---|---|---|
|
|||
while в plpgsql - нужна помощь |
|||
|
#18+
Блин - как посмотрел в свой же сабж - тут же нашел ответ на первый вопрос ))) Помогите с вопросом номер 2 - не будет ли бесконенчой рекурсии? И еще - с вашей точки зрения, правильно ли реализована система (виртуальная принадлежность делается для того, чтобы в категориях, где нет товарв, выдавать топ из их товаров - наследников) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.02.2006, 09:53
|
|||
|---|---|---|---|
|
|||
while в plpgsql - нужна помощь |
|||
|
#18+
ZiNTeRИ еще - с вашей точки зрения, правильно ли реализована системаИМХО. Поля childs_num, is_real избыточны, поэтому не нужны. Связь id_item, cat_id должна быть один к одному, поэтому таблицу связей можно объединить с таблицей товаров. Каждый товар должен быть приписан к одной листовой (у которой нет потомков) категории. ZiNTeRвиртуальная принадлежность делается для того, чтобы в категориях, где нет товарв, выдавать топ из их товаров - наследниковДля работы с деревьями вида "id, parent_id" есть модуль ltree. С его помощью можно будет выдать товары категорий-потомков, подсчитать childs_num и т. д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=53&mobile=1&tid=2006634]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
33ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
33ms |
get tp. blocked users: |
1ms |
| others: | 240ms |
| total: | 347ms |

| 0 / 0 |
