2013-04-24 68 views
1

请帮助我查询。我在DBMS方面很弱。查询处理SQL Server

我有有一些行如下

pkParentId FKProductId  Name 
    1    5    P1 
    2    5    P2 
    3    3    P3 

TBLParent,我有另一个表TBLChild是由它的孩子

pkId  fkParentId ChildName 
1   1   C1 
2   1   c2 
3   2   c1 

现在的,问题是,我想父记录和计数的子女根据productId

例如:我想

select 
    TBLParent.pkParentId, TBLParent.FKProductId, 
    TBLParent.Name, 
    count of its children 
where 
    TBLParent.FKProductId = 5 

我试过这样

Select 
    count(TBLChild.pkId) AS total, 
    TBLChild.fkParentId  
from 
    TBLChild 
group by 
    TBLChild.fkParentId 

,但我怎么能附上父表的记录,这个算不算?

这将给我数,但我将如何附加父记录与此计数。我的意思是说输出将是

pkParentId Name  Count 
    1   P1   2 
    2   P2   1 

请帮忙请帮助请帮忙吗?

回答

1
SELECT P.pkParentId 
     ,P.Name 
     ,COUNT(*) 
FROM tblParent P 
INNER JOIN tblChild C ON P.pkParentId = C.fkParentId 
WHERE P.pkParentId = @yourValueHere 
GROUP BY P.pkParentId, P.Name 
+0

但主席先生,我想通过fkParentId记录不pkParentId像上面的查询选择P.pkParentId ,P.Name ,COUNT(*)FROM tblParent P INNER JOIN tblChild C ON P. pkParentId = C.fkParentId WHERE P.fkParentId = @yourValueHere GROUP BY P.pkParentId,P.Name – Prince 2013-04-24 14:10:06

+0

在上面的查询中,fkParentId和pkParentId将相等。查询中的“INNER JOIN”部分对你来说是什么。根据您的问题中的示例输出,此查询将为您提供您正在寻找的内容。 – Aushin 2013-04-24 14:13:47

+0

好的先生根据你的情况,如果我把@ yourValueHere = 5,它会返回我所需的结果。很抱歉再次打扰你。但是我最后的回答让我感到困惑。 – Prince 2013-04-24 14:25:00