![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
SQL-запрос ОСТАТОК ТОВАРОВ НА СКЛАДЕ [D7, MSSQL, MySQL, Paradox]
vader © (2005-05-27 14:27:00)Помогите пожалуйста оформить SQL-запрос считающий остаток на складе. Имеется изначально такая таблица(см. ниже), где тип, если 0 - приход, если 1 - то расход соответствующего продукта. Приход и расход таким образом храниться в одной таблице и отличается только флагом Тип.
Продукт | Кол-во | Тип
-------------------------
Помидор | 30 | 0
Яблоко | 40 | 0
Мясо | 50 | 0
Сок | 100 | 0
Помидор | 10 | 1
Яблоко | 20 | 1
Мясо | 30 | 1
Помидор | 5 | 1
После запроса надо получить такие выходные данные:
Продукт | Расход | Приход | Осталось(Приход-Расход)
-----------------------------------------------------
Помидор | 15 | 30 | 15
Яблоко | 20 | 40 | 20
Мясо | 30 | 50 | 20
Сок | 0 | 100 | 100
т.е. считается общий расход для каждого продукта, и просто переносятся данные о приходе(где тип=0), а так же(это наверное вычисляемое поле) считается остаток как разница между приходом и расходом.
Чтобы получить приход, нужно выполнить:
SELECT *
FROM products.db
WHERE (tip>0)
ORDER BY name
а для расхода:
SELECT *
FROM products.db
WHERE (Tip>0)
GROUP BY name
ORDER BY name
Но необходимо чтобы всё это было в одном запросе и получились данные в таком виде, как представлено выше. Опыта у меня построения таких сложных отчётов почти нет. Что для этого надо использовать? Вложенные запросы, группировку или что?
Sergey13 (2005-05-27 14:56:00) [21]2 [2] msguns © (27.05.05 14:53)
А как вариант не пойдет? Я первое что в голову пришло написАл. Наверное лучшее приходит дольше. 8-)
msguns (2005-05-27 14:53:00) [22]>Sergey13 © (27.05.05 14:38) [1]
А простым вложением нельзя ?
Sergey13 (2005-05-27 14:38:00) [23]Попробуй так
SELECT Продукт,sum(кол*(1-тип)) приход, sum(кол)-sum(кол*(1-тип)) расход, sum(кол*(1-тип)) -(sum(кол)-sum(кол*(1-тип))) остаток
FROM products.db
GROUP BY Продукт