Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.08.2013, 08:01   #1
Alexxa
Пользователь
 
Регистрация: 03.04.2013
Сообщений: 10
Вопрос Разница сумм между 2-мя таблицами

Добрый день! Помогите с запросом, пожалуйста.
Есть 3 таблицы. Таблица с товарами. Таблица с данными о выдаче товара. Таблицы с данными о продажах. Нужно найти разницу между суммой выданного и суммой проданного товара, что бы найти остатки.

tabl.jpg
Делаю запрос такого вида:
Код:
select sum(tehniki_sklad.kol),  sum (cast(sklad.ves as integer)) from tehniki_sklad, sklad
where tehniki_sklad.kod_tehnika=33 and  tehniki_sklad.kod_sneka=264 and
 sklad.kod_tehnika=33 and sklad.kod_ingredienta=264 and sklad.del is null   and tehniki_sklad.del is null
Alexxa вне форума Ответить с цитированием
Старый 09.08.2013, 08:15   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Я наверное бы так делал:
Код:
select
 sum(v.Сумма)-(select  sum(p.Сумма) from Продажа p where p.kodtovara=v.kodtovara)
from Выдача v
group by v.kodtovara
where not v.kodtovara is null
Ну по крайней мере в представленных в теме условиях.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.08.2013, 11:20   #3
Alexxa
Пользователь
 
Регистрация: 03.04.2013
Сообщений: 10
По умолчанию

Мне нужно разницу по всем товарам, по одному отдельному технику. Я на основе вашего ответа сделала так.

select sum (v.kol_v) - (Select sum (p.kol_prod) from p, v where p.kod_tovara=v.kod_tovara
and p.tehnik=v_tehnik ) from tovari, p where p.tehnik=33 and p.kod_tovara=tovari.Kod_tovara

Но не работает.
Alexxa вне форума Ответить с цитированием
Старый 09.08.2013, 22:38   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Типа такого, не проверял. С разбивкой по товарам
Код:
SELECT t.kod_tovara,
    COALESCE((SELECT SUM(v.kol_v) FROM Выдача v WHERE v.tehnik=33 AND v.kod_tovara=t.kod_tovara),0)-
    COALESCE((SELECT SUM(p.kol_prod) FROM Продажи p WHERE p.tehnik=33 AND p.kod_tovara=t.kod_tovara),0) AS Ostat
  FROM Товары t
  WHERE EXISTS(SELECT * FROM Выдача v WHERE v.tehnik=33 AND v.kod_tovara=t.kod_tovara) OR
        EXISTS(SELECT * FROM Продажи p WHERE p.tehnik=33 AND p.kod_tovara=t.kod_tovara)
ADD

Будет гораздо удобнее, если приход и расход в одной таблице и различается по некоторому признаку. ИМХО
Тогда бы просто
Код:
SELECT kod_tovara,
    SUM(CASE WHEN priznak=1 THEN koli ELSE 0 END)-
    SUM(CASE WHEN priznak=2 THEN koli ELSE 0 END) AS Ostat
  FROM Движение
  WHERE tehnik=33
  GROUP BY kod_tovara
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 09.08.2013 в 23:43.
Аватар вне форума Ответить с цитированием
Старый 10.08.2013, 09:25   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Будет гораздо удобнее, если приход и расход в одной таблице и различается по некоторому признаку. ИМХО
Не ИМХО а однозначно
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.08.2013, 12:30   #6
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Код:
SELECT kod_tovara,
    SUM(CASE WHEN priznak=1 THEN koli  --добавляем приход
                   WHEN priznak=0 then   -koli  --убираем расход
                                           ELSE 0   --пропускаем все остальное
      END  )  AS Ostat
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 10.08.2013 в 12:33.
evg_m вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
разница между компами новая Компьютерное железо 1 20.11.2011 12:33
В чем разница между С и С++? Freddy Krjuger Общие вопросы C/C++ 1 14.11.2009 21:23
Разница между временем asd48 Microsoft Office Excel 1 05.06.2009 23:44
Разница между датами kykysya Общие вопросы Delphi 8 26.03.2009 18:22
Разница между датами deenka БД в Delphi 3 31.01.2008 13:21