2013-02-05 64 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

希望它有助於

相關問題