2

我有两张表,一张叫做 Products,一张叫做 Products_Category。我想显示每个类别的库存计数(按类别分组),并显示类别的名称。Products 表具有每个产品的库存计数,但 Products_Category 表具有类别名称。如何将两者一起显示?我应该使用某种加入吗?

这是我想要得到的:

Category_Name --------- Sum(Products_Inventory)

------书籍-------- 1 ----------
------玩具----- ----------------- 2 ----------

但截至目前,我只能显示类别ID而不是类别名称,如下所示:

-------- 1 ------------ 1 ----------
-------- 2 ---------- 2 ----------

4

3 回答 3

1

使用JOINGROUP BY

SELECT PC.Category_Name, Sum(P.Products_Inventory)
FROM Products_Category PC
   INNER JOIN Products P ON PC.ProductId = P.ProductId
GROUP BY PC.Category_Name

顺便说一句——这假设您在每个表中都有一个 ProductId 字段。如果我可以提出建议,您可能也应该有一个类别表(更好地进行规范化)。将您的 ProductId 和 CateogryId 存储在 Products_Category 表中。

祝你好运。

于 2013-02-05T03:25:16.743 回答
0

对于这些查询,我假设product_id是在两个表上(如果我猜错了,你必须使用正确的字段名称)。我也Product_Category.description用作具有类别名称的字段的名称。

此查询将为您获取所有类别,以及在表中找到的任何产品类别的计数为 0 。Product

如果库存Product中的每个产品都包含一条记录(即,4 本书意味着 4Product条记录),那么这COUNT()就是您想要的功能。

SELECT Products_Category.description, COUNT(Product.product_id) AS category_count
FROM Products_Category
   LEFT OUTER JOIN Products ON Products_Category.product_id=Products.product_id
GROUP BY Products_Category.description

如果库存中每种类型Product的产品都包含一条记录(即,4 本书意味着 1 条记录,其中 a为 4),那么这就是您想要的功能。product_countSUM()

SELECT Products_Category.description, SUM(Product.product_count) AS category_count
FROM Products_Category
   LEFT OUTER JOIN Products ON Products_Category.product_id=Products.product_id
GROUP BY Products_Category.description

如果您只希望在该类别中有库存时返回记录,请将其更改LEFT OUTER JOININNER JOIN

SELECT Products_Category.description, SUM(Product.product_count) AS category_count
FROM Products_Category
   INNER JOIN Products ON Products_Category.product_id=Products.product_id
GROUP BY Products_Category.description
于 2013-02-05T03:25:44.640 回答
0

最简单的方法是这样做..

SELECT a.Category_Name, Sum(b.Products_Inventory)
FROM Products_Category a, Products b
where a.ProductId = b.ProductId
GROUP BY a.Category_Name

希望能帮助到你

于 2013-02-05T04:19:23.463 回答