ВЫБОР MYSQL ИЛИ SQL с ИСКЛЮЧЕНИЕМ (HAVING) и ГРУППА

0

У меня есть три таблицы в базе данных и хочу суммировать и сравнивать в одном выражении SELECT.

Логика заключается в том, что если одна статья работает с низким запасом, ее следует выбрать. Статья работает на низком уровне, если суммарное quantity всех строк с одинаковым artID в таблице. Articles in stock (статья может содержать несколько строк в таблице и поэтому должна быть суммирована) ниже или равна warning столбца в строке с соответствующий ID. Это также специфично для warehouse, что означает, что статья может быть полностью заполнена на одном складе и в то же время работать в другом. Именно поэтому необходимо суммировать сгруппированные на определенном складе. Информация о том, какой склад работает на низком уровне, и, например, artNr для статьи, также требуется, что можно найти в таблице Articles

Articles
+----+-------+---------+
| ID | artNr | warning |
+----+-------+---------+
|  1 | LA08  |       5 |
|  2 | LA09  |      10 |
|  3 | LA58  |       0 |
+----+-------+---------+

warehouse
+----+-------+
| ID | artID |
+----+-------+
|  3 |     1 |
|  4 |     1 |
|  5 |     2 |
+----+-------+

Articles in stock
+----+-------+-------------+----------+
| ID | artID | warehouseID | quantity |
+----+-------+-------------+----------+
|  1 |     1 |           3 |       10 |
|  2 |     1 |           5 |       15 |
|  3 |     2 |           5 |       45 |
|  4 |     1 |           3 |       20 |
|  5 |     3 |           5 |        4 |
+----+-------+-------------+----------+
  • 0
    Какой смысл складской стол? Не должно ли быть столбец имени вместо столбца artID?
  • 0
    Это говорит о том, какие товары существуют на каком складе.
Теги:

1 ответ

1
Лучший ответ
select a.id, s.warehouseID, sum(s.quantity)
from articles a 
join articles_in_stock s on a.id = s.artID
group by a.id, s.warehouseID
having sum(s.quantity) <= a.warning 

Ещё вопросы

Сообщество Overcoder
Наверх
Меню