Здравствуете, помогите понять алгоритм вывода количество записей из категории, например:
Музыка (20)
Фильмы (10)
Сериалы (50)
Сам я делаю так:
Получаю список категории в массив $cats и внутри цикла foreach выполняю SQL запрос для выбора записей у которых cat_id = $cat['id']
Всё получается но думаю это не оптимальный вариант, так как в отладке вижу что выполняются много SQL запросов.
Может есть более простое решение?
#1
19 ноября 2014 в 16:41
#2
19 ноября 2014 в 18:06
Очень интересная тема, ребята подключайтесь, нужно ведь для двойки сделать качественное меню категорий контента с показом, кол-ва этого контента в категориях. Готов подкинуть 500wmr в фонд разработчиков меню
Сегодня в 12:49
#4
19 ноября 2014 в 18:52
Pasha, Спасибо, работает) с меня плюс
#5
19 ноября 2014 в 20:04
Pasha, А можно ли как нибудь сделать выборку из таблицы категория?
Данный запрос работает для выбора например из cms_con_articles
Как мне сделать выборку из таблицы cms_con_articles_cats и при этом считать количество записей этой категории из таблицы cms_con_articles по category_id
Извиняюсь если вопросы очень тупые) я не силен в SQL
Данный запрос работает для выбора например из cms_con_articles
Как мне сделать выборку из таблицы cms_con_articles_cats и при этом считать количество записей этой категории из таблицы cms_con_articles по category_id
Извиняюсь если вопросы очень тупые) я не силен в SQL
#6
19 ноября 2014 в 20:41
Все это делается при помощи объединения (JOIN), но ничего конкретного не скажу так как для этого как минимум нужно видеть таблицы, а я двойку пока не ставил.
#8
19 ноября 2014 в 21:22
Evanescence, я ведь понятия не имею что и зачем вы делаете… Ну да не суть. Например мы хотим вытащить все материалы сайта и узнать кол-во комментариев к каждому из них, тогда запрос должен быть таким:
Иными словами остается все та же связка COUNT и GROUP BY, а уж как там все это разруливать в конкретно вашей ситуации смотрите сами.
SELECT cc.id, cc.title, COUNT(cm.id) AS comments FROM cms_content cc LEFT JOIN cms_comments cm ON cm.target_id = cc.id AND cm.target = 'article' GROUP BY cc.id ORDER BY cc.title
Evanescence http://roothelp.ru/lessons_post.php?id=86 так быстрее поймете, что к чему конкретно к Вашему случаю
#10
12 июня 2016 в 10:44
Что-то друзья я не совсем понял, как правильно в двойке сформировать вывод количества записей в категории и подкатегориях????
Нужно джоинить таблицу "..cats_bind", но это будет только для последнего уровня вложения
Нужно джоинить таблицу "..cats_bind", но это будет только для последнего уровня вложения
#11
12 июня 2016 в 11:09
Сделал так:
Но количество выводиться как я и говорил только в категориях, в которых непосредственно находиться запись, а в родительских категориях количество не выводиться. Нужна помощь!!!
joinLeft('con_{ctype}_cats_bind', 'c', 'c.category_id = i.id'); select('COUNT(item_id)', 'count'); groupBy('id');
#12
12 июня 2016 в 11:20
Вадим Нарочный, Вот как я сделал для одного проекта
мне нужна была количество записей категории + подкатегории...
Посмотрите функцию filterCategory думаю вам поможет
if($cat_id && $cat_id != 1){ $model->table_prefix = ''; $cat = $model->getItemById('board_cats', $cat_id); $model->filterCategory('board', $cat, true); } $items = $model->getCount('board');
Посмотрите функцию filterCategory думаю вам поможет
#13
12 июня 2016 в 11:33
Вадим Нарочный, Вот как я сделал для одного проекта
мне нужна была количество записей категории + подкатегории...
if($cat_id && $cat_id != 1){ $model->table_prefix = ''; $cat = $model->getItemById('board_cats', $cat_id); $model->filterCategory('board', $cat, true); } $items = $model->getCount('board');
Посмотрите функцию filterCategory думаю вам поможет
Мне нужно вывести количество записей в дереве категорий, а не на странице!