计算每行中另一个表中的子项

时间:2009-08-11 04:50:46

标签: sql mysql

我有两张表:CATEGORYSUBCATEGORY

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')

例如,有一个名为.NET的CATEGORY,它在SUBCATEGORY中有条目,如ASP.NET,VB.NET,C#.NET。在这种情况下,我需要使用MySQL将CATEGORY的计数设为1,将SUBCATEGORY的计数设为3。

我该如何做到这一点?

3 个答案:

答案 0 :(得分:3)

好吧,你可以使用子查询来完成它。但是,您需要在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 :(得分:1)

由于我们可以假设类别计数是1,并且两个表之间的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

答案 2 :(得分:0)

SELECT COUNT(*) FROM CATEGORY;
SELECT COUNT(*) FROM SUB_CATEGORY;

我不相信这正是你想要的,但是如果没有外键,那就是你真正得到的。