小编典典

从SQL表中获取计数

sql

我有三个表,其中两个是主表,另一个是map。它们在下面给出。

  1. tbl_Category,具有列ID(PK)和名称

/ *

    ID      NAME
1   Agriculture & Furtilizers
2   Apparel & Garments
3   Arts & Crafts   
4   Automobiles
  • /

  • tbl_SubCategory

    /*
    

    Id SubCategoryName CategoryId (FK, PK of above)
    2 Badges, Emblems, Ribbons & Allied 2
    3 Barcodes, Stickers & Labels 2
    4 Child Care & Nursery Products 2
    9 Fabrics & Textiles 2

    */

现在,第三个表是tbl_Company_Category_Map,其中包含公司的所有类别及其子类别。以下是其架构和数据。

/*

CompanyCategoryId   SubCategoryId   CategoryId  CompanyId
10                   36             11          1
11                   38             11          1
12                   40             11          1


*/

上面的第一列是tbl_Company_Category_Map的PK,第二列是tbl_SubCategory的PK,第三列是tbl_Category的PK,最后一个是公司ID。现在,我要显示的是显示在一个类别的每个子类别中的显示公司总数。像这样

Subcategory Name                                        Total COmpanies 
Apparel, Clothing & Garments                             1153
Badges, Emblems, Ribbons & Allied Products               4100
Barcodes, Stickers & Labels                              998
Child Care & Nursery Products                            2605
Cotton Bags, Canvas Bags, Jute Bags & Other Fabric Bags 2147

我正在使用查询:

BEGIN


SELECT     tbl_SubCategory.Name AS SubCategoryName, tbl_Category.Name AS CategoryName, TotalCompanies=(Select COUNT(*) From tbl_Company_Category_Map WHERE CategoryId = @Id)
FROM         tbl_Category INNER JOIN
                      tbl_Company_Category_Map ON tbl_Category.Id = tbl_Company_Category_Map.CategoryId INNER JOIN
                      tbl_SubCategory ON tbl_Company_Category_Map.SubCategoryId = tbl_SubCategory.Id
WHERE     (tbl_Company_Category_Map.CategoryId = @Id)
Group By tbl_SubCategory.Name , tbl_Company_Category_Map.CategoryId, tbl_Category.Name 
ORDER BY tbl_Company_Category_Map.CategoryId

END

我的问题是每行我得到的公司总数相同。请帮我。


阅读 256

收藏
2021-05-05

共1个答案

小编典典

试试这个:

BEGIN


SELECT     tbl_SubCategory.Name AS SubCategoryName, COUNT(*) AS TotalCompanies
FROM       tbl_Category INNER JOIN
                      tbl_Company_Category_Map ON tbl_Category.Id = tbl_Company_Category_Map.CategoryId INNER JOIN
                      tbl_SubCategory ON tbl_Company_Category_Map.SubCategoryId = tbl_SubCategory.Id
WHERE     (tbl_Company_Category_Map.CategoryId = @Id)
Group By tbl_SubCategory.Name
ORDER BY tbl_SubCategory.Name

END
2021-05-05