私は、同じサイズで箱に入っている私の製品を置くためにラックのスペースを二乗した倉庫を持っています。SQL Serverで "空き容量を確認する"
ラックには大きさが異なるスペースがあり、最大でXの箱入り品を入れることができます。スペースのサイズは可変にすることができます。その理由のために、私はカラムがあるテーブルスペースを持っていますMaximumCapacity
。
これらのスペースをシステムにマップして、まだ空き容量があるかどうかを知り、スペースに別のボックス製品を保持できるラックをすばやく指定しようとしています。これは私が私のスペース対の製品を取得するために、SQL Server 2008のビューをやろうとしてきた倉庫
の階層を表すことができます。
私はそこに保持できる製品の数を指定するために、MaximumCapacity
という列のスペーステーブルを持っています。私はProductLocation
と呼ばれる別のテーブルを持っています。
私は、最初に自分のスペースとその製品のすべての割り当てや場所を取得するために左結合を行っています。
SELECT
s.ID, s.Code,
s.MaximumCapacity,
pl.ProductCode
FROM
Space s
LEFT JOIN
ProductLocation pl ON s.ID = pl.SpaceID
これは、このデータは、C#でより良い方法で再配置されますが、ポイントは、これ以上の部屋でスペースを取得するためのネットワークトラフィックを避けるために、この
Code - Maximum capacity - ProductCode
-----------------------------------------
SPACE 1 - 4 - PRODUCT1
SPACE 1 - 4 - PRODUCT2
SPACE 2 - 8 - PRODUCT3
SPACE 3 - 2 - PRODUCT4
SPACE 3 - 2 - PRODUCT5
のようなものを返します製品については、使用可能な容量のレコードを取得したいだけです。私は成功せずに把握しようとしてきました。結果の例では、SPACE3の最大容量は2であり、そこにはすでに2つの製品(PRODUCT4とPRODUCT5)があります。私がいないと、すべての不要なスペースを取得するために、パフォーマンス上の問題を抱えている
Code - Maximum capacity - ProductCode
-----------------------------------------
SPACE 1 - 4 - PRODUCT1
SPACE 1 - 4 - PRODUCT2
SPACE 2 - 8 - PRODUCT3
:どのように私は最終的にこれを取得するスペースの最大容量に基づいて、これらの2つの最後の行を避けるために(WHERE)フィルタすることができ
より多くの部屋。
ありがとうございます。
ProductLocationテーブルの各製品は、正確に1つのスペースを占有しますか?そうでない場合は、それに要するスペースの量はどのように決定されますか? – RBarryYoung
スペースは最大容量で構成され、3とします。次に、ProductLocationはその容量スペースの一部を表します。したがって、ProductLocationに2つの製品を追加すると、1つの製品の余裕ができます。私は1つの製品を追加します。製品数= 3対スペース容量= 3の場合、行はスキップされます。 –
だから、そう? ProductLocationの各製品/行は、スペーステーブルのMaximumCapacityの1つのスペースを正確に占有しますか? – RBarryYoung