Вывод в цикле суммы строчек с одинаковым идентификатором.

Статус
В этой теме нельзя размещать новые ответы.

Bobrov

Постоялец
Регистрация
7 Авг 2008
Сообщения
145
Реакции
13
Подскажите пожалуйста, с помощью какой команды на различных сайтах выводиться количество элементов внутри категории

Пример:
Автомобили (20)
Катера (6)
Велосипеды (13)

То бишь у меня база две таблицы, в одной список категорий и их id, а в другой таблице названия объектов и id категорий к которым они относятся.

Категории выводятся в цикле, далее хочу чтоб считалось скока в таблице объектов с id равным id категории и писалось в скобочках.
 
select count(*) from название_таблицы_с_объектами where id=айди_категории;
 
select count(*) from название_таблицы_с_объектами where id=айди_категории;

Пробовал, но на сколько я знаю это создает нагрузку и подобные запросы вставлять в цикл не рекомендуется?
 
Сделайте запрос до цикла. В цикле делать какие-либо запросы вообще не рекомендуется.

Попробуйте такой запрос:
select count(*) as cnt, ид_категории from название_таблицы_с_объектами group by ид_категории
 
Заведи табличку, соторая будет только эти значения содержать, а потом JOIN-ом соединяй в запросе.
Плюс в том, что COUNT() не нужно использовать, что даёт выгоду при больших базах.
Минус, в том, что при любом изменении сиоержимого рубрик нужно делать два запроса в (обе таблицы).
 
А я делаю в таблице категориях дополнтельное поле в котором считается кол-во объектов.
При добавление или удаление соотвественно обнавляется данные в таблице +1 или -1 , и не нужно делать не какую третью таблицу.
 
А я делаю в таблице категориях дополнтельное поле в котором считается кол-во объектов.
При добавление или удаление соотвественно обнавляется данные в таблице +1 или -1 , и не нужно делать не какую третью таблицу.

Напиши пожалуйста структуру.
 
Можно попробовать создать view (id, count).

Но про count(*) читал, что он создает нагрузку когда таблицы типа InnoDB, а если MyISAM, то он работает очень шустро с большим количеством записей.
 
Напиши пожалуйста структуру.

Какая структура там? =)
Создаешь дополнительное поле в таблице категорий. Допустим count_product
При добавлении нового объекта после INSERT в таблицу объектов делаешь UPDATE 'таблица категорий' SET count_product+1 WHERE id='категория которую указали при добавлении'
 
Лучше делать не + - при удалении и добавлении, а каждый раз после этих действий подсчитывать кол-во статей в каталге и записывать их в яйчейку. Так как если статья не удалится или не доабвтся ошибочно, то счетчик навсегда собьется.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху