倉庫内のアイテムを計算して倉庫内の空き容量を計算し、Inshelf と free の列を持つテーブルに出力したいのですが、このようなものを思いつきます。
SELECT COUNT(*) as Inshelf, free=10-Inshelf
FROM stock.stockproduct
WHERE StockNum = 1
AND checkOutData is NULL;
どうやらうまくいかないようですが、この種の問題に対する簡単な解決策はありますか?
これは機能しません。集計関数 (例: 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
仕事 !!
SELECT InShelf, 10 - InShelf
FROM (
SELECT count(*) AS Inshelf, count(*) AS free
FROM stock.stockproduct
WHERE StockNum = 1 AND checkOutData IS NULL
) AS a;
みんなありがとう、そしてバカでごめんなさい =.='