SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 23.02.2008 11:24:40

Nikolay
Участник
Зарегистрирован: 05.02.2008
Сообщений: 20

пересчет значений внутри таблицы

Есть таблица в которой хранятся категории товаров. Котегории есть родительские (в соответственном столбце parentid запись "0" или вложенные, соответственная запись в том же столбце "1"). Список категорий построен так, что первой идет родительская категория, затем все вложенные в нее, опять родительская, все вложенные, и т.д.). Каждая категория имеет свой уникальный id, который хранится в соответственном столбце.
В таблице есть столбец models_num, в котором хранятся числа (количество товаров из определенной группы).
То есть каждой категории товара соответствует число.
Для вложенных категорий все значения уже записаны в столбце models_num, для родительских - везде ноль.
Как посчитать общее число товаров для каждой родительской категории (сумма всех вложенных) и записать в соответствующее ей поле в столбце models_num?

Неактивен

 

#2 23.02.2008 12:37:05

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: пересчет значений внутри таблицы

Неудачная реализация базы. Лучше для вложенных категорий в столбце parentid указывать id родительской категории (порядок следования при этом не будет важен).

Одним запросом Вам не обойтись, так как нельзя использовать водном выражении UPDATE и SELLECT FROM к одной таблице.
Создаете таблицу table_temp куда вносите id родительских и сумму товара для них

CREATE TABLE table_temp SELECT t1.parentid,sum(t1.models_num) as models_num from table_name t1 LEFT JOIN table_name t2 ON t1.id=t2.parentid WHERE t1.parentid<>0 GROUP BY t1.parentid;

Затем обновляете исходную таблицу
UPDATE table_name t, table_temp t1 SET t.models_num = t1.models_num WHERE t.id=t1.parentid;



При нынешней реализации так не получится. Нужно или писать внешний скрипт на php или делать хранимую процедуру.

Неактивен

 

#3 23.02.2008 15:57:13

Nikolay
Участник
Зарегистрирован: 05.02.2008
Сообщений: 20

Re: пересчет значений внутри таблицы

Обнаружил, что немного неправвильно указал условия. Действительно, в столбце parentid указывается id родительской категории.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson