2016-10-31 4 views
-1

У меня есть store таблицы, которые имеют productName, productNumber, storedInBranch, blockNumber, quantity, notifyIn.Sql запросов Возврат Уведомление из магазина таблицы

Если quantity меньше notifyIn он уведомляет меня, и я попробовал ниже запрос:

select * from store 
where (quantity < notifyIn) AND (notify > 0) 

, который работает идеально, но так как один продукт может храниться в нескольких blockNumbers он уведомляет меня, даже если сумма продуктов не менее notifyin,

например .:

productName = monitor, productNumber=123, storedInBranch=kenya, blocknumber=5b, quantity=5, notifyin=4 

productName = monitor, productNumber=123, storedInBranch=kenya, blocknumber=<b>1a</b>, quantity=5, notifyin=4 

так Abov e возвращает как минимум то, что я хотел сделать, это сумма как quantity (5 + 5), так и notifyIn 4.

+0

Рассмотрите возможность нормализации схемы базы данных, чтобы удалить повторяющееся поле. Можете ли вы извлекать продукты в свою таблицу? – useyourillusiontoo

+0

Также извлекайте ветви в таблицу с соответствующей информацией о филиале, такой как предел уведомления – useyourillusiontoo

ответ

1

Вы полагаетесь здесь на notifyin, являющееся одним и тем же значением в нескольких строках. Вы могли бы сделать что-то вроде

SELECT productNumber, sum(quantity), min(notifyin) 
FROM store 
GROUP BY productNumber 
HAVING sum(quantity) < min(notifyin) 

Я бы рекомендовал вам изменить схему, если это возможно, чтобы лучше отразить логику вашего домена. Возможно, есть отдельная таблица с номером продукта и уведомлять по значению. Таким образом, вы не дублируете notifyin и не рискуете хранить различное значение в разных строках.

+0

Рад слышать, что это помогает. Примите мой ответ, если это поможет вам ответить на ваш вопрос. – RVid

+0

Прочитайте следующее: [Что делать, если кто-то отвечает на мой вопрос?] (Https://stackoverflow.com/help/someone-answers). –

Смежные вопросы