Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Количество товров в категории с учетом подгатегорий
 
 автор: dimaxz   (30.03.2011 в 09:37)   письмо автору
 
 

Например есть категория А и у нее подкатегории Б и С. И товары привязанные к каждой по 5 и 10 товаров соответсвенно.
как отобразить одним запросом категорию А с количесвтом товаров 15 с учетом количесвта товаров в каждой подкатегории Б и С??

  Ответить  
 
 автор: cheops   (30.03.2011 в 10:51)   письмо автору
 
   для: dimaxz   (30.03.2011 в 09:37)
 

Обычно задачу делят на две части
1. Извлечение первичных ключей А, Б и С, можно при помощи рекурсии, можно при помощи специальной кэширующей таблицы, которая обновляется по триггеру или cron или при добавлении позиции.
2. Извлечение количества товаров при помощи вложенного запроса
SELECT COUNT(*) FROM tbl WHERE id IN (А, Б, С)

  Ответить  
 
 автор: dimaxz   (30.03.2011 в 10:58)   письмо автору
 
   для: cheops   (30.03.2011 в 10:51)
 

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

  Ответить  
 
 автор: cheops   (30.03.2011 в 11:12)   письмо автору
 
   для: dimaxz   (30.03.2011 в 10:58)
 

Нет, оптимальнее будет вытащить список подкатегорий, для которых вам нужно подсчитать количество товаров, чтобы не считать каждый раз. Да, можно, держать количество товаров в категории в самой таблице категорий (в этом случае COUNT() у вас заменяется на SUM()), но проблема вложенных категорий остается, чтобы избежать дорогой рекурсии (включающей SQL-запросы) лучше кэшировать так же и список вложенных подкатегорий для каждой из категории. Если подкатегорий будет пару сотен, а вложений штук 5 - скажите себе за это спасибо.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования