2012-09-22 42 views
2

我希望計算倉庫中的物品並計算倉庫中的空閒空間,然後輸出到列爲Inshelf並且空閒的表格,然後我想出類似這樣的東西。在SQL count()值上進行計算

SELECT COUNT(*) as Inshelf, free=10-Inshelf 
    FROM stock.stockproduct 
WHERE StockNum = 1 
    AND checkOutData is NULL; 

看來它不會工作,有沒有這種問題的任何簡單的解決方案?

+0

請包括架構。 –

+0

您是否可以包含一些用於測試的數據,表格結構並指定您正在使用的RDBMS,MS SQL Server,MySQL,Oracle。 – Yaroslav

+0

我正在使用MySQL – Samuel

回答

3

這是行不通的 - 聚合函數的結果(例如count())在所有記錄被考慮之後纔可用。你需要一個子查詢,在子查詢中進行計數,在外部進行減法。不知道你的數據庫架構,這是最好的猜測,但...

SELECT InShelf, free - InShelf 
FROM (
    SELECT count(*) AS Inshelf, free 
    FROM stockproduct 
    WHERE StockNum = 1 AND checkOutData IS NULL 
    GROUP BY somefield 
) AS a 
+0

未知領域列表中的'free' – Samuel

+0

@ user1660416:看看你在你的問題中寫了些什麼,以及Marc在他的回答中寫了什麼,然後用你的頭來弄清楚現場列表中有什麼「免費」並修復它。你應該學會嘗試實際閱讀和理解事物,而不是複製和粘貼它們。 Marc,+1。很好的答案。 –

0

工作!

SELECT InShelf, 10 - InShelf 
FROM (
    SELECT count(*) AS Inshelf, count(*) AS free 
    FROM stock.stockproduct 
    WHERE StockNum = 1 AND checkOutData IS NULL 

) AS a; 

感謝,併爲愚蠢= SRY。=」