Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.09.2011, 15:32   #1
fioru
Пользователь
 
Регистрация: 24.08.2011
Сообщений: 14
По умолчанию Сложный запрос для MySQL

День добрый.
Подскажите как правильно вызвать функцию UPDATE если в таблице данных категорий есть
id (номер категории)
parent (родительская категория)
title (название категории)
text (просто поле)
Так вот. Мне желательно одним запросом изменить поле text у выбранной категории и всех категорий идущей в ней ниже по иерархии.
Т.е.
$db->super_query( "UPDATE `" . PREFIX . "_shop_category` SET `text` = '$text' WHERE `id` = '$id' or `parent` = '$id';" );
затронет лишь саму категорию и категории на 1 уровень ниже. Но категории включенные в дочерние категории он не затронет, что в моем случае не правильно. Как максимально упростить себе задачу, не выдумывая кучу лишних запросов на id дочерних категорий и правку их внутренних категорий до бесконечности
fioru вне форума Ответить с цитированием
Старый 07.09.2011, 15:46   #2
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,160
По умолчанию

максимально облегчить - не обновлять таким образом поле текст.... зачем это? подумайте еще раз можно ли обойтись без этого.
ADSoft вне форума Ответить с цитированием
Старый 07.09.2011, 15:50   #3
fioru
Пользователь
 
Регистрация: 24.08.2011
Сообщений: 14
По умолчанию

А как тогда минимизировать затраты человеческого времени.
Есть интернет-магазин. Есть не фиксированная цена, а наценка.
Заказчик желает видеть возможность установки процента для все категорий, и для каждой категории по отдельности.

Допустим

все товары
- категория 1
- категория 2
- категория 3
-- категория 31
--- категория 311
--- категория 312
-- категория 32
- категория 4

Запросом для всех категорий мы ставим наценку. Потом для категории 3 нам надо другую, включая все категории внутри нее. На приведенном примере выглядит все легко и просто. А представьте что на самом деле у Вас 5 сотен категорий размещенных на 5 уровнях
fioru вне форума Ответить с цитированием
Старый 07.09.2011, 18:14   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

В такой структуре одним UPDATE не обойдешься, только процедуру писать или в триггере на обновление реализовывать
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 07.09.2011, 19:43   #5
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,160
По умолчанию

я бы обновлял лишь наценку самой категории, а для нахождения текущей наценки на тот или иной товар использовал бы рекурсивную процедуру (не SQL) которая бы шла по дереву вниз до первой категории с установленной наценкой.

Можно конечно и в самой базе менять - но как сказал предыдущий оратор - очень это непросто... читайте теорию про организацию древовидных структур в реляционных БД. Способов там немало ...
ADSoft вне форума Ответить с цитированием
Старый 07.09.2011, 22:45   #6
fioru
Пользователь
 
Регистрация: 24.08.2011
Сообщений: 14
По умолчанию

Большое спасибо за помощь.
Решил вопрос путем множественного цикла
Результаты категорий с выбранной родительской категорией записывались в массив по уровню и по номеру, далее по порядку они сканировались на свои дочерние категории и таким же методом записывались. Процесс шел до момента когда дочерних категорий нет, и тогда система поднималась на уровень верх к следующему результату.

Последний раз редактировалось fioru; 07.09.2011 в 22:47.
fioru вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
один mysql запрос для двух рядов. dimron PHP 4 09.06.2011 15:21
Сложный запрос templton Microsoft Office Access 8 21.04.2011 13:43
SQL запрос в MYSQL для интервала дат slips SQL, базы данных 7 05.06.2010 21:41
Сложный запрос Lianchik Помощь студентам 1 01.03.2010 17:16
Помогите создать сложный запрос (или как писать код для столбца запроса) kukuanna Microsoft Office Access 0 24.07.2009 14:10