Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

SQL-запрос ОСТАТОК ТОВАРОВ НА СКЛАДЕ [D7, MSSQL, MySQL, Paradox]


Страницы:   1 2

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 Продукт


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо