2013-02-05 41 views
1

我有两个表,一个叫做产品,一个叫做Products_Category。我想显示每个类别的库存盘点(按类别分组),并显示类别的名称。 Products表具有每个产品的库存盘点数,但Products_Category表具有类别名称。我怎样才能将两者一起展示?我应该使用某种连接吗?选择按另一列分组的列数SQL

这里就是我试图让:

CATEGORY_NAME ---------总和(Products_Inventory)

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

但截至目前所有我能够显示的是类别ID而不是类别名称,像这样:

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

+0

我建议,包括一个链接到sqlfiddle.com与DDL以及一些样品数据全部设置,以便人们可以给出更好的答案。 – jmoreno

回答

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 

顺便说一句 - 这是假设你在每个表都有一个产品id字段。如果我可以提出建议,你应该也可以有一个分类表(更好的用于标准化)。将ProductId和CateogryId存储在Products_Category表中。

祝你好运。

+0

什么意思是产品_类别*电脑*和产品* P *? –

+0

这些是表格上的别名 - 不必键入整个名称的简写。合理? – sgeddes

+0

我认为是这样,我只是困惑于你如何写产品,然后写P,并写了Products_Category,然后是另一台PC。 –

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个纪录的4 product_count),比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 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 
0

最简单的方法就是做..

选择一个.Category_Name,Sum(b。Products_Inventory)
FROM Products_Category一,产品b
其中a.ProductId = b.ProductId
GROUP BY a.Category_Name

希望它有助于

相关问题