GeT
Новичок
Как оптимальнее всего обновить?
У меня есть каталог, в нем несколько таблиц:
1. cat_tree - дерево каталогов
2. cat_properties - хар-ки и их дефолтные значения для каждой папки.
3. item_properties - используемые хар-ки и их значения для каждого товара.
4. properties - сами хар-ки (название, единицы измерения).
Как видите, для каждой папки есть определенный набор хар-к, которые используются для всех товаров в ней. Так вот, проблема в том, чтобы наиболее оптимальным способом обновить этот набор характеристик.
То, что придумал я (довольно криво)
$affected_properties = список id характеристик, выбранных юзером (ну там форма с чекбоксами).
1. [SQL] DELETE FROM cat_properties WHERE cat_id = id_папки AND prop_id NOT IN('$affected_properties')[/SQL]
2. [SQL] SELECT id FROM cat_items WHERE cat_id = id_папки [/SQL]
Забиваем все id в массив $affected_items
3. [SQL] DELETE FROM item_properties WHERE item_id IN('$affected_items') AND prop_id NOT IN('$affected_properties') [/SQL]
4. Обновляем дефолтные значения для остальных характеристик (запрос пока не придумал).
Я понимаю, что это довольно криво. Помогите, плиз составить правильный алгоритм!
У меня есть каталог, в нем несколько таблиц:
1. cat_tree - дерево каталогов
2. cat_properties - хар-ки и их дефолтные значения для каждой папки.
3. item_properties - используемые хар-ки и их значения для каждого товара.
4. properties - сами хар-ки (название, единицы измерения).
Как видите, для каждой папки есть определенный набор хар-к, которые используются для всех товаров в ней. Так вот, проблема в том, чтобы наиболее оптимальным способом обновить этот набор характеристик.
То, что придумал я (довольно криво)
$affected_properties = список id характеристик, выбранных юзером (ну там форма с чекбоксами).
1. [SQL] DELETE FROM cat_properties WHERE cat_id = id_папки AND prop_id NOT IN('$affected_properties')[/SQL]
2. [SQL] SELECT id FROM cat_items WHERE cat_id = id_папки [/SQL]
Забиваем все id в массив $affected_items
3. [SQL] DELETE FROM item_properties WHERE item_id IN('$affected_items') AND prop_id NOT IN('$affected_properties') [/SQL]
4. Обновляем дефолтные значения для остальных характеристик (запрос пока не придумал).
Я понимаю, что это довольно криво. Помогите, плиз составить правильный алгоритм!