У меня есть три таблицы, в которых две являются мастер-таблицами, а другая - картой. Они приведены ниже.
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
*/
Выше, первый столбец - это PK tbl_Company_Category_Map, второй столбец - это PK tbl_SubCategory, а третий - PK для tbl_Category, а последний - идентификатор компании.
Теперь я хочу отобразить общее количество компаний, перечисленных в каждой подкатегории категории. Примерно так.
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
Моя проблема в том, что я получаю одинаковое количество компаний для каждой строки. Пожалуйста, помогите мне.