2

倉庫内のアイテムを計算して倉庫内の空き容量を計算し、Inshelf と free の列を持つテーブルに出力したいのですが、このようなものを思いつきます。

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

どうやらうまくいかないようですが、この種の問題に対する簡単な解決策はありますか?

4

2 に答える 2

3

これは機能しません。集計関数 (例: count()) の結果は、すべてのレコードが考慮されるまで利用できません。サブクエリでこれを行う必要があり、サブクエリでカウントを行い、外側のサブクエリで減算を行います。DBスキーマを知らなくても、これはせいぜい推測ですが...

SELECT InShelf, free - InShelf
FROM (
    SELECT count(*) AS Inshelf, free
    FROM stockproduct
    WHERE StockNum = 1 AND checkOutData IS NULL
    GROUP BY somefield
) AS a
于 2012-09-22T16:33:16.953 に答える
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;

みんなありがとう、そしてバカでごめんなさい =.='

于 2012-09-22T17:14:21.103 に答える