[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как подсчитать количество товаров в каждой группе?
Владимир55
В таблице товара, содержащей сведения о товаре, имеются поля id (номер записи), group_id (это номер строки в таблице групп, сообщающий, к какой группе относится данный товар), и поле name_tov (сведения о товаре).

А в таблице групп имеется поле id (которое в таблице товаров отражается как group_id), поле n_tov_grupp для записи количество товара в этой группе, и поле adres_grupp, отражающее иерархию групп.

Для корня сайта в поле adres_grupp запись «Каталог», а для других групп в соответствии с тем, как эти группы расположены.
Например:
Каталог/Wova
Каталог/Wova/Форд
Каталог/Wova/кадиллак
Каталог/Wova/Форд/Купе
Каталог/Wova/Форд/седан
Каталог/Wova/Форд/Купе/двудверный
Каталог/Мерседес

Необходимо подсчитать количество товаров, входящих в каждую их этих групп. Поскольку одна группа входит в другую, то я даже не представляю себе алгоритм такого подсчета!

Возможно ли это вообще?

А если возможно, то как это сделать попроще?
vagrand
Если у вас товар может входить в несколько групп, то та структура что есть сейчас уже не подходит. Вам надо сделать отдельную таблицу с двумя полями id_группы и Id_товара. Затем напишите триггер на вставку, изменение и удаление из этой таблицы, который будет изменять значение поля n_tov_grupp в таблице групп. Таким образом у вас всегда уже будет для каждой группы посчитано число товаров в ней.

_____________
Senior PHP developer: PHP5, MySQL, JavaScript, CakePHP, Yii/Yii2, Zend Framework, Smarty, XML/Xslt, JQuery, Jquery Mobile, Bootstrap, ExtJS, HTML, HTML5, CSS, Linux, SVN, Git, Memcached, Redis, MongoDB, Zend Guard, Ioncube, FFMpeg, PayPal, Webmoney, Qiwi, Facebook API, Vkontakte Api, Google API, Twitter Api, Steam Api.
Junior Android Developer: Android SDK, многопоточность, работа с HTTP запросами, JSON, SQLite, фрагменты.
Владимир55
Цитата (vagrand @ 24.11.2012 - 15:48)
Если у вас товар может входить в несколько групп...

Нет, каждый товар может входить тольков одну группу.

Как в этом случае?
vagrand
Владимир55
Цитата
Нет, каждый товар может входить тольков одну группу.

Цитата
Каталог/Wova/Форд/Купе


ПО видимому все таки не в одну, товар входит и группу Форд и в группу Купе. ПО этому сделайте как я вам предложил.

_____________
Senior PHP developer: PHP5, MySQL, JavaScript, CakePHP, Yii/Yii2, Zend Framework, Smarty, XML/Xslt, JQuery, Jquery Mobile, Bootstrap, ExtJS, HTML, HTML5, CSS, Linux, SVN, Git, Memcached, Redis, MongoDB, Zend Guard, Ioncube, FFMpeg, PayPal, Webmoney, Qiwi, Facebook API, Vkontakte Api, Google API, Twitter Api, Steam Api.
Junior Android Developer: Android SDK, многопоточность, работа с HTTP запросами, JSON, SQLite, фрагменты.
Владимир55
1. Товар входит только в одну группу.
Приведенный Вами пример Каталог/Wova/Форд/Купе следует интерпретивать так:
Каталог - это корень.
В корне есть группа Wova. В группе Wova есть группа Форд. В группе Форд есть группа Купе.

В каждой из упомянутых групп находятся свои товары, причем каждый товар может быть только в одной группе. И требуется подсчитать, сколько товаров в группе Каталог (то есть, в корне), сколько в группе Wova, сколько в группе Форд и сколько в группе Купе.

Замечу, что добавление одного товара в группу Купе автоматически увеличивает количество товара и во всех предыдущих группах (поскольку Купе в них вложено).

2.
Цитата (vagrand @ 25.11.2012 - 06:11)
ПО этому сделайте как я вам предложил.

Да я бы и рад сделать так, как Вы предложили, да не могу это осуществить…

Цитата (vagrand @ 25.11.2012 - 06:11)
Вам надо сделать отдельную таблицу с двумя полями id_группы и Id_товара. Затем напишите триггер на вставку, изменение и удаление из этой таблицы, который будет изменять значение поля n_tov_grupp в таблице групп. Таким образом у вас всегда уже будет для каждой группы посчитано число товаров в ней. 

Таблицу я сделать могу, но что такое триггер и как все это будет функционировать не понимаю.

Можете поподробнее изложить Вашу мысль?
(Если из уточнения по п.1 не проистекает другого решения)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.