У меня есть склад, который имеет квадраты в стойках, чтобы поместить мои товары того же размера и в коробках.«Проверка доступности емкости в пробелах» с SQL Server
Имеются места в стойках, которые могут различаться по размеру, и я могу разместить максимум X изделия в коробке. Размер пространства может быть переменным. По этой причине у меня есть табличное пространство, где у меня есть столбец MaximumCapacity
.
Я пытаюсь сопоставить эти пространства в системе, чтобы узнать, есть ли доступность емкости и быстро адресная стойка, где мое пространство может содержать другой продукт в штучной упаковке. Это может быть представляют собой иерархию склада
+ Warehouse (1 warehouse)
+ Racks (5 000 racks)
+ Spaces (10 000 spaces)
+ Products (1 to N per space)
Я пытался сделать SQL Server 2008 представление, чтобы получить свои места против продуктов.
У меня есть таблица Space с колонкой MaximumCapacity
, чтобы указать, сколько продуктов можно удержать там. У меня есть другая таблица под названием ProductLocation
.
Я делаю левое соединение, чтобы получить первые мои пробелы и все его назначения или местоположения с продуктами.
SELECT
s.ID, s.Code,
s.MaximumCapacity,
pl.ProductCode
FROM
Space s
LEFT JOIN
ProductLocation pl ON s.ID = pl.SpaceID
Это возвращает что-то вроде этого
Code - Maximum capacity - ProductCode
-----------------------------------------
SPACE 1 - 4 - PRODUCT1
SPACE 1 - 4 - PRODUCT2
SPACE 2 - 8 - PRODUCT3
SPACE 3 - 2 - PRODUCT4
SPACE 3 - 2 - PRODUCT5
Эти данные будут перестраивается в лучшую сторону в C#, но дело в том, чтобы избежать сетевого трафика для получения места, не больше места для продукта я просто хочу получить записи с доступной емкостью. Я пытался понять без успеха. В примере результатов максимальная емкость SPACE3 равна 2 и уже имеет 2 продукта (PRODUCT4 и PRODUCT5).
Как можно отфильтровать (WHERE), чтобы избежать этих 2 последних строк, основываясь на максимальной мощности пространства, чтобы получить, наконец, это:
Code - Maximum capacity - ProductCode
-----------------------------------------
SPACE 1 - 4 - PRODUCT1
SPACE 1 - 4 - PRODUCT2
SPACE 2 - 8 - PRODUCT3
У меня есть проблемы с производительностью, чтобы извлечь все ненужные пробелы с не больше места.
Заранее спасибо.
Каждый ли продукт в таблице ProductLocation занимает ровно 1 пробел? Если нет, то как определяется размер, который он занимает? – RBarryYoung
Пространство сконфигурировано с максимальной пропускной способностью, допустим, 3. Затем ProductLocation представляет часть этого пространства емкости. Поэтому, если я добавлю 2 продукта в ProductLocation, у меня будет место еще 1 продукт. Если я добавлю еще 1 продукт. Количество продуктов = 3 против Space = 3, тогда строки будут пропущены. –
Итак, да? Каждый продукт/строка в ProductLocation занимает ровно одно пространство MaximumCapacity в таблице Space? – RBarryYoung