- Автор темы
- #1
Здравствуйте,
Помогите pls с запросом подсчета количества объектов в категориях
Есть 2-х уровневое дерево категорий. Объект может относиться к множеству категорий. Если у категории есть подкатегории, то объект не может быть привязан к категории.
1. Справочник категорий с иерархией до 2 уровня
ref_cat
id (int)
title (var)
root_id (int) (все категории имеют родителя = 5, подкатегории id родителя)
level (int)
sort (int)
2. Таблица хранения связей
ref_cat_cli
category_id (int)
task_id (int)
2. Упрощенный вариант объекта
r_user_client
id (int)
Создал запрос выборки, но не пойму как получить количество объектов в каждой категории в 1 запрос (count начинает ругаться от таких сопоставлений)
Запрос состоит из 2 частей: 1 - выбирает все объекты из подкатегорий (ref_cat.root_id!=5)
2 - объединяется с объектами, находящимися в категориях
Помогите pls с запросом подсчета количества объектов в категориях
Есть 2-х уровневое дерево категорий. Объект может относиться к множеству категорий. Если у категории есть подкатегории, то объект не может быть привязан к категории.
1. Справочник категорий с иерархией до 2 уровня
ref_cat
id (int)
title (var)
root_id (int) (все категории имеют родителя = 5, подкатегории id родителя)
level (int)
sort (int)
2. Таблица хранения связей
ref_cat_cli
category_id (int)
task_id (int)
2. Упрощенный вариант объекта
r_user_client
id (int)
Создал запрос выборки, но не пойму как получить количество объектов в каждой категории в 1 запрос (count начинает ругаться от таких сопоставлений)
Код:
select title,id from
(
select ref_cat.title, ref_cat.id from ref_cat where ref_cat.id IN (select ref_cat.root_id from ref_cat, r_user_client, ref_cat_cli where ref_cat.root_id!=5 and ref_cat.id = ref_cat_cli.category_id and ref_cat_cli.task_id = r_user_client.id group by ref_cat.root_id)
union
select ref_cat.title, ref_cat.id from ref_cat, r_user_client, ref_cat_cli where ref_cat.root_id=5 and ref_cat.id = ref_cat_cli.category_id and ref_cat_cli.task_id = r_user_client.id group by ref_cat.title, ref_cat.id
)
group by title, id
order by title
Запрос состоит из 2 частей: 1 - выбирает все объекты из подкатегорий (ref_cat.root_id!=5)
2 - объединяется с объектами, находящимися в категориях