我有两个表,一个名为Products,另一个名为Products_Category。我想显示每个类别的库存盘点(按类别分组),并显示类别的名称。 Products表具有每个Product的库存计数,但Products_Category表具有Category名称。如何将两者一起显示?我应该使用某种加入吗?
这是我想要的:
Category_Name --------- Sum(Products_Inventory)
------书籍-------------------- 1 ----------
------玩具---------------------- 2 ----------
但截至目前,我能够显示的是 ID 类别,而不是类别 name ,如下所示:
------- 1 ------------------------ 1 ----------
------- 2 ------------------------ 2 ----------
答案 0 :(得分:1)
使用JOIN
和GROUP 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
BTW - 假设您在每个表中都有一个ProductId字段。如果我可以提出建议,你也应该有一个分类表(更适合规范化)。将ProductId和CateogryId存储在Products_Category表中。
祝你好运。答案 1 :(得分:0)
对于这些查询,我假设product_id
在两个表上(如果我猜错了,你必须使用正确的字段名)。我还使用Product_Category.description
作为具有类别名称的字段的名称。
此查询将为您提供所有类别,并为Product
表中不的任何产品类别提供0的计数。
如果Product
包含库存中每个产品的一条记录(即4本书意味着4 Product
条记录),则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条记录,其中product_count
为4条),则{{1}是你想要的功能。
SUM()
如果您只想要在该类别中有广告资源时返回的记录,请将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 JOIN
:
INNER JOIN
答案 2 :(得分:0)
最简单的方法就是这样做..
选择a.Category_Name,Sum(b.Products_Inventory)
FROM Products_Category a,产品b
其中a.ProductId = b.ProductId
GROUP BY a.Category_Name
希望有所帮助