Показать сообщение отдельно
  #2  
Старый 11.05.2012, 06:27
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Вообще, тут надо править структуру БД. Все записи должны быть в одной таблице и отличаться просто по типу (ну для простоты можно еще и по знаку, в зависимости от операции с товаром). Избавишься от большого кол-ва потенциальных проблем.

А в данном случае, если заьить на оптимальность, то можно сделать так:
Код:
select idtov, sum(skolvo) from
(
select idtov, (sum(kolvo)) as skolvo from vozv_tov Group by idtov
union all
select idtov, (sum(kolvo)) as skolvo from nak_tov Group by idtov
union all
select idtov, (sum(kolvo)) as skolvo from oprihdovanie Group by idtov
union all
select idtov, -1 * (sum(kolvo)) as skolvo from prod_tov Group by idtov
union all
select idtov, -1 * (sum(kolvo)) as skolvo from spisanie Group by idtov
) foo
group by idtov
where idtov = 2

Как-то так. Только это очень дорого для БД делать такой запрос.
Ответить с цитированием