Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 为每一行计算另一个表中的孩子数_Sql_Mysql - Fatal编程技术网

Sql 为每一行计算另一个表中的孩子数

Sql 为每一行计算另一个表中的孩子数,sql,mysql,Sql,Mysql,我有两个表:CATEGORY和SUBCATEGORY category_id int(11) category_name varchar(250) category_status enum('0', '1') subcategory_id int(10) subcategory_name varchar(255) status enum('0', '1') 类别的表结构 category_id

我有两个表:
CATEGORY
SUBCATEGORY

category_id         int(11)  
category_name       varchar(250) 
category_status     enum('0', '1')
subcategory_id      int(10) 
subcategory_name    varchar(255)    
status              enum('0', '1')
类别的表结构

category_id         int(11)  
category_name       varchar(250) 
category_status     enum('0', '1')
subcategory_id      int(10) 
subcategory_name    varchar(255)    
status              enum('0', '1')
子类别的表结构

category_id         int(11)  
category_name       varchar(250) 
category_status     enum('0', '1')
subcategory_id      int(10) 
subcategory_name    varchar(255)    
status              enum('0', '1')
例如,有一个名为.NET的
类别
,它在
子类别
中有条目,如ASP.NET、VB.NET、C#.NET。在这种情况下,我需要使用MySQL将
CATEGORY
的计数设为1,将
SUBCATEGORY
的计数设为3


我怎样才能做到这一点呢?

好吧,你可以通过一个子查询来实现。但是,您需要在
子类别
表中添加一个
category\u id
列,以便我们知道哪些子类别与哪些类别对应。然后,您可以通过以下查询获得所需内容:

select
    category_name,
    1 as CategoryCount,
    (select count(*) from subcategory where category_id = c.category_id) as SubCategoryCount
from
    category c

好的,你可以用一个子查询来完成。但是,您需要在
子类别
表中添加一个
category\u id
列,以便我们知道哪些子类别与哪些类别对应。然后,您可以通过以下查询获得所需内容:

select
    category_name,
    1 as CategoryCount,
    (select count(*) from subcategory where category_id = c.category_id) as SubCategoryCount
from
    category c
我不相信这正是你想要的,但是没有外键你就只能得到这些


我不相信这正是你想要的,但没有外键你就只能得到这些。

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

由于我们可以假设category count为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


嗯?这令人困惑。请使用“显示创建表”显示表架构。这里有一些有用的提示:哇,埃里克,wtf?你对那里的编辑似乎有点过火了。你为什么要更改他的简介并删除初学者标签?@hobodave:我认为
初学者
标签是多余的,几乎没有意义。如果你想讨论一下原因,请转到Meta。除此之外,我把问题改成了修正语法。我还注意到我错过了一个挥之不去的“am”,所以我也会改变它。“我是一个菜鸟”对回答这个问题真的没有任何影响。只是删除某人的问候以及结尾的感谢似乎有些迟钝。@hobodave:有关更多信息,请参阅Meta:嗯?这令人困惑。请使用“显示创建表”显示表架构。这里有一些有用的提示:哇,埃里克,wtf?你对那里的编辑似乎有点过火了。你为什么要更改他的简介并删除初学者标签?@hobodave:我认为
初学者
标签是多余的,几乎没有意义。如果你想讨论一下原因,请转到Meta。除此之外,我把问题改成了修正语法。我还注意到我错过了一个挥之不去的“am”,所以我也会改变它。“我是一个菜鸟”对回答这个问题真的没有任何影响。只是删除某人的问候以及结尾的感谢似乎有些迟钝。@hobodave:有关更多信息,请参阅Meta:这正是我需要的Eric。。谢谢你及时的帮助。@Fero:很高兴帮你。请随意将此标记为答案,因为我现在处于-1。这对那些疯狂的谷歌用户很有帮助。不知道为什么早些时候被否决了Eric。。这是我在stack over flow的第一天。。你能帮我把这个问题标记为答案吗?不,我们把它留给世界其他地方,这样他们就可以解决你遇到的同样的问题。这正是我需要的Eric。。谢谢你及时的帮助。@Fero:很高兴帮你。请随意将此标记为答案,因为我现在处于-1。这对那些疯狂的谷歌用户很有帮助。不知道为什么早些时候被否决了Eric。。这是我在stack over flow的第一天。。你能帮我把这个问题标记为答案吗?不,我们把它留给世界其他地方,这样他们就可以解决你遇到的同样的问题。不客气。您也可以通过单击每个答案左侧的向上箭头来向上投票答案。;)不客气。您也可以通过单击每个答案左侧的向上箭头来向上投票答案。;)