2015-10-20 65 views
0

我有3個表如何獲得每個倉庫中的產品總量?

#Products [Pro_ID] ,[Pro_Name], 
#Stock [Stock_ID] ,[Pro_ID],[Warehouse_ID] ,[Qty] ,[Status] 
Warehouse [Warehouse_ID] ,[Name] 

我想提出一個報告,我的asp.net項目,它顯示出我們在每個倉庫中的產品總數。我試過這個查詢,除了Pro_ID寫入頭沒有數據(0行受影響)之外什麼也沒有顯示。

SELECT Pro_ID from Stock 
where Qty > 0 
GROUP BY Pro_ID 
HAVING COUNT(*) = (SELECT COUNT(*) FROM Warehouse) 

這是我最近在股票 Stock table

+0

什麼股票和倉庫約內加入?然後你只需要選擇count(*),group By Pro_ID –

+1

'HAVING COUNT(*)=(SELECT COUNT(*)FROM Warehouse)'過濾所有的結果 - 你要求的ID號相同的行作爲整個表格。 – MikeTheLiar

+0

@ SergioIvanuzzo ..你可以發佈它作爲答案,而不是評論 –

回答

0

,如果你只是想獲得的是在每個倉庫:

SELECT w.Name, sum(s.Qty) 
FROM Stock s 
INNER JOIN Warehouse w 
ON s.Warehouse_ID = w.Warehouse_ID 
GROUP BY w.Warehouse_ID,w.Name 
+0

太棒了,它的工作....非常感謝你:) –

0
SELECT 
    Warehouse.[Warehouse_ID], 
    Warehouse.[Name] 
    #Products.[Pro_ID], 
    #Products.[Pro_Name], 
    #Stock.[Stock_ID], 
    #Stock.[Qty], 
    #Stock.[Status] 
FROM 
    #Stock 
    LEFT OUTER JOIN Warehouse ON #Stock.[Warehouse_ID] = Warehouse.[Warehouse_ID] 
    LEFT OUTER JOIN #Products ON #Stock.[Pro_ID] = #Products.[Pro_ID] 

注意,通過與#Stock和外側連接到兩個主表開始,你只能得到您擁有實際的記錄結果#Stock表。如果您想要在所有倉庫中使用所有產品,則需要選擇FROM Warehouse CROSS JOIN #Products以獲得產品和倉庫的每個組合,然後將其外部聯接到您的#Stock表以獲取它們存在的記錄,並使用空替換填充沒有記錄的零您的#Stock表。

0

試試這個:

SELECT COUNT(*) from Stock s 
INNER JOIN Warehouse w ON s.warehouse_id = w.warehouse.id 
where s.Qty > 0 
GROUP BY Pro_ID 
+0

This告訴我這個,而不是我想要的輸出 http://snag.gy/InriP.jpg –

+1

所以,你需要改變GROUP BY條件。試試group by warehouse_id –

0

你的問題有點不清楚。您是否在尋找每個倉庫中每種產品的產品數量?如果是這樣,這個查詢應該爲你工作:

SELECT 
    warehouse_id, pro_id, SUM(qty) AS quantity 
FROM #stock 
WHERE Qty > 0 
GROUP BY 
    warehouse_id, pro_id 
+0

這隻能給我和我發佈股票表圖像 –

+0

相同的結果你能提供一個你想看到什麼輸出的例子嗎? – dfundako

+0

Like Warehouse 1 - ABC = 100產品 倉庫2 - XYZ = 234產品 我的意思是每個倉庫的產品總數沒有? –

相關問題