SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 13.07.2012 03:35:22

Kiryha
Участник
Зарегистрирован: 13.07.2012
Сообщений: 1

Пересчет записей в таблице..

Здравствуйте уважаемые форумчане!
Подскажите пожалуста как сделать пересчет в категориях, при такой структуре таблиц:


CREATE TABLE IF NOT EXISTS `cats` (
  `cats_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `cats_order` int(11) unsigned NOT NULL DEFAULT '0',
  `cats_parent` int(11) unsigned NOT NULL DEFAULT '0',
  `cats_parent_all` varchar(255) NOT NULL DEFAULT '',
  `cats_name` varchar(100) NOT NULL DEFAULT '',
  `cats_about` varchar(255) NOT NULL DEFAULT '',
  `cats_count` mediumint(8) unsigned NOT NULL DEFAULT '0',
  PRIMARY KEY (`cats_id`),
  KEY `cats_parent` (`cats_parent`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=11 ;

INSERT INTO `cats` VALUES
(1, 1, 0, '0', 'Категоия 1', '', 0),
(2, 2, 0, '0', 'Категоия 2', '', 0),
(3, 3, 1, '0,1', 'Под категоия 1', '', 0),
(4, 4, 1, '0,1', 'Под категоия 2', '', 0),
(5, 5, 1, '0,1', 'Под категоия 3', '', 0),
(6, 6, 3, '0,1,3', 'Под - под категоия 1', '', 0),
(7, 7, 3, '0,1,3', 'Под - под категоия 2', '', 0),
(8, 8, 3, '0,1,3', 'Под - под категоия 3', '', 0),
(9, 9, 6, '0,1,3,6', 'Под - под - под -  категоия 1', '', 0),
(10, 10, 6, '0,1,3,6', 'Под - под - под - категоия 2', '', 0);
 


и таблица файлов, к примеру:


CREATE TABLE IF NOT EXISTS `files` (
  `file_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `file_cats` int(11) unsigned NOT NULL DEFAULT '0',
  `file_name` varchar(100) NOT NULL DEFAULT '',
  `file_about` varchar(255) NOT NULL DEFAULT '',
  PRIMARY KEY (`file_id`),
  KEY `file_cats` (`file_cats`)
) ENGINE=MyISAM;
 


Записываю и удаляю так

$row = $db->selectRow("SELECT `cats_parent_all` FROM ?_cats WHERE `cats_id` = ?", $id);

$db->query("UPDATE ?_cats SET `cats_count` = (`cats_count` + 1) WHERE (`cats_id` IN(" . $row['cats_parent_all'] . ") OR `cats_id` = ?);", $id);
 


и вроде всё работает, но если обнулить `cats_count` или потребуется пересчитать, то перечитать обратно не как не могу....
Если например:
Под - под - под -  категоия 1  = 5 файлов
Под - под - под - категоия 2   = 5 файлов
Под - под категоия 3             = 10 файлов

и вот сам вопрос, как подсчитать за пару-тройку запросов чтобы обновить записи `cats_count`
Категоия 1                            = 20 файлов
Под - под категоия 1              = 10 файлов
Под - под - под -  категоия 1  = 5 файлов
Под - под - под - категоия 2   = 5 файлов
Под - под категоия 3              = 10 файлов

Перебрал все варианты до которых мог додумался, а правильно так и не получилось...

Неактивен

 

Board footer

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