Количество записей в категории. Нужна помощь

 
Посетитель
small user social cms
МедальКубок зрительских симпатийАвторитет форума
Сообщений: 1168
Здравствуете, помогите понять алгоритм вывода количество записей из категории, например:
Музыка (20)
Фильмы (10)
Сериалы (50)

Сам я делаю так:
Получаю список категории в массив $cats и внутри цикла foreach выполняю SQL запрос для выбора записей у которых cat_id = $cat['id']
Всё получается но думаю это не оптимальный вариант, так как в отладке вижу что выполняются много SQL запросов.

Может есть более простое решение?
Дополнения для InstantCMS 2 | Готовый сайт Доска объявлений
Посетитель
small user social cms
Медаль
Сообщений: 321
Очень интересная тема, ребята подключайтесь, нужно ведь для двойки сделать качественное меню категорий контента с показом, кол-ва этого контента в категориях. Готов подкинуть 500wmr в фонд разработчиков меню v
Реклама
cms
Посетитель
small user social cms
МедальКубок зрительских симпатий
Сообщений: 692
Как-то так очевидно
Код PHP:
  1. SELECT cat_id, COUNT(id) AS summ FROM you_table GROUP BY cat_id;
Skype: pasha--g
Посетитель
small user social cms
МедальКубок зрительских симпатийАвторитет форума
Сообщений: 1168
Pasha, Спасибо, работает) с меня плюс
Дополнения для InstantCMS 2 | Готовый сайт Доска объявлений
Посетитель
small user social cms
МедальКубок зрительских симпатийАвторитет форума
Сообщений: 1168
Pasha, А можно ли как нибудь сделать выборку из таблицы категория?
Данный запрос работает для выбора например из cms_con_articles
Как мне сделать выборку из таблицы cms_con_articles_cats и при этом считать количество записей этой категории из таблицы cms_con_articles по category_id
Извиняюсь если вопросы очень тупые) я не силен в SQL
Дополнения для InstantCMS 2 | Готовый сайт Доска объявлений
Посетитель
small user social cms
МедальКубок зрительских симпатий
Сообщений: 692
Все это делается при помощи объединения (JOIN), но ничего конкретного не скажу так как для этого как минимум нужно видеть таблицы, а я двойку пока не ставил.
Skype: pasha--g
Посетитель
small user social cms
МедальКубок зрительских симпатийАвторитет форума
Сообщений: 1168
Можете на примере первой ветки показать, или может знаете ссылку на какую нибудь статью про это?
Я пробую так но не помогает
Код PHP:
  1.  
  2. SELECT i.*, COUNT(s.id) AS summ FROM cms_con_articles_cats i
  3. INNER JOIN cms_con_articles as s ON i.id = s.category_id
  4. GROUP BY s.category_id
  5.  
Дополнения для InstantCMS 2 | Готовый сайт Доска объявлений
Посетитель
small user social cms
МедальКубок зрительских симпатий
Сообщений: 692
Evanescence, я ведь понятия не имею что и зачем вы делаете... Ну да не суть. Например мы хотим вытащить все материалы сайта и узнать кол-во комментариев к каждому из них, тогда запрос должен быть таким:
Код SQL:
  1.  
  2. SELECT cc.id,
  3. cc.title,
  4. COUNT(cm.id) AS comments
  5. FROM cms_content cc
  6. LEFT JOIN cms_comments cm ON cm.target_id = cc.id AND cm.target = 'article'
  7. GROUP BY cc.id
  8. ORDER BY cc.title
  9.  
Иными словами остается все та же связка COUNT и GROUP BY, а уж как там все это разруливать в конкретно вашей ситуации смотрите сами.
Skype: pasha--g
Модератор
small user social cms
МедальКубок зрительских симпатийАвторитет форума
Сообщений: 1341
Evanescence http://roothelp.ru/lessons_post.php?id=86 так быстрее поймете, что к чему конкретно к Вашему случаю
Редактировалось: 1 раз (Последний: 20 ноября 2014 в 13:38)
почему я задаю мало вопросов? потому, что на 90% из них уже кто-то ответил...
Посетитель
small user social cms
Медаль
Сообщений: 232
Что-то друзья я не совсем понял, как правильно в двойке сформировать вывод количества записей в категории и подкатегориях????

Нужно джоинить таблицу "..cats_bind", но это будет только для последнего уровня вложения
Посетитель
small user social cms
Медаль
Сообщений: 232
Сделал так:

Код PHP:
  1.  
  2. joinLeft('con_{ctype}_cats_bind', 'c', 'c.category_id = i.id');
  3. select('COUNT(item_id)', 'count');
  4. groupBy('id');
  5.  
Но количество выводиться как я и говорил только в категориях, в которых непосредственно находиться запись, а в родительских категориях количество не выводиться. Нужна помощь!!!
Посетитель
small user social cms
МедальКубок зрительских симпатийАвторитет форума
Сообщений: 1168
Вадим Нарочный, Вот как я сделал для одного проекта
Код PHP:
  1. if($cat_id && $cat_id != 1){
  2. $model->table_prefix = '';
  3. $cat = $model->getItemById('board_cats', $cat_id);
  4. $model->filterCategory('board', $cat, true);
  5. }
  6. $items = $model->getCount('board');
мне нужна была количество записей категории + подкатегории...
Посмотрите функцию filterCategory думаю вам поможет
Дополнения для InstantCMS 2 | Готовый сайт Доска объявлений
Посетитель
small user social cms
Медаль
Сообщений: 232
Evanescence:

Вадим Нарочный, Вот как я сделал для одного проекта
Код PHP:
  1. if($cat_id && $cat_id != 1){
  2. $model->table_prefix = '';
  3. $cat = $model->getItemById('board_cats', $cat_id);
  4. $model->filterCategory('board', $cat, true);
  5. }
  6. $items = $model->getCount('board');
мне нужна была количество записей категории + подкатегории...
Посмотрите функцию filterCategory думаю вам поможет

Мне нужно вывести количество записей в дереве категорий, а не на странице!
В начало страницы
Предыдущая темаСледующая тема Перейти на форум:
Быстрый ответ
Чтобы писать на форуме, зарегистрируйтесь или авторизуйтесь.