Подсчет детей в другой таблице для каждого ряда - PullRequest
0 голосов
/ 11 августа 2009

У меня есть две таблицы: CATEGORY и SUBCATEGORY

Структура таблицы для CATEGORY

category_id         int(11)  
category_name       varchar(250) 
category_status     enum('0', '1')

Структура таблицы для SUBCATEGORY

subcategory_id      int(10) 
subcategory_name    varchar(255)    
status              enum('0', '1')

Например, существует один CATEGORY с именем .NET, и он имеет записи в SUBCATEGORY, такие как ASP.NET, VB.NET, C # .NET. В этом случае мне нужно получить счет CATEGORY как 1 и счет SUBCATEGORY как 3, используя MySQL.

Как мне это сделать?

Ответы [ 3 ]

3 голосов
/ 11 августа 2009

Ну, вы можете сделать это с помощью подзапроса. Тем не менее, вам нужно добавить столбец category_id в таблицу subcategory, чтобы мы знали, какие подкатегории и какие категории. Затем вы можете получить то, что вы хотите, с помощью следующего запроса:

select
    category_name,
    1 as CategoryCount,
    (select count(*) from subcategory where category_id = c.category_id) as SubCategoryCount
from
    category c
1 голос
/ 11 августа 2009

Поскольку мы можем предположить, что количество категорий равно единице, и более чем вероятно ключевое ограничение для category_id между двумя таблицами, это также будет работать:

select c.category_id, count(c.category_id) 
from category c
inner join subcategory s on (c.category_id = s.category_id)
group by c.category_id
0 голосов
/ 11 августа 2009
SELECT COUNT(*) FROM CATEGORY;
SELECT COUNT(*) FROM SUB_CATEGORY;

Я не верю, что это именно то, что вы собираетесь, но это все, что вы действительно получите без внешнего ключа.

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