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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.04.2008, 15:32   #1
mana
 
Регистрация: 06.04.2008
Сообщений: 7
По умолчанию Помогите с Расчетным полем в запросе SQL

http://photofile.ru/photo/darkangel/.../116884412.jpg

Вот так нельзя сказали, ну и правда я там напортачила выводит чисто остаток со всей таблицы:


Код:
SELECT DISTINCT ((SELECT sum(Vop.Summa) FROM Spr_operac as So, Vipoln_operac as Vop WHERE Vop.Kod_operac=So.Kod_operac AND So.Type_operac='Приход')-
    (SELECT sum(Vop.Summa) FROM Spr_operac as So, Vipoln_operac as Vop WHERE Vop.Kod_operac=So.Kod_operac AND So.Type_operac='Расход')) as Ostatok
FROM Kass_kniga as Kas, Spr_ras4_s4et as SRas

А надо по каждому ID_kass_kniga свой остаток + еще дату вывести и этот ИД книги
Ид касс книги | Дата | Остаток
001 | дата1 | остаток 1

тут тоже фигню выводит:
http://photofile.ru/photo/darkangel/.../116890140.jpg

Код:
SELECT Kas.ID_kass_kniga, Kas.data, Kas.Ostatok, 
((select sum(Vop.Summa) from Spr_operac as So, Vipoln_operac as Vop, Kass_kniga as Kas where Vop.Kod_operac=So.Kod_operac and Vop.ID_kass_kniga=Kas.ID_kass_kniga  and So.Type_operac='Приход')-
 (select sum(Vop.Summa) from Spr_operac as So, Vipoln_operac as Vop, Kass_kniga as Kas where Vop.Kod_operac=So.Kod_operac and Vop.ID_kass_kniga=Kas.ID_kass_kniga and So.Type_operac='Расход')) as Ostatrasch
FROM Kass_kniga as Kas, Vipoln_operac as Vop 
where Vop.ID_kass_kniga=Kas.ID_kass_kniga  
ORDER By Kas.ID_kass_kniga
mana вне форума Ответить с цитированием
Старый 06.04.2008, 16:08   #2
SNUPY
Форумчанин
 
Регистрация: 15.02.2008
Сообщений: 621
По умолчанию

Я так и не понял приведенная диаграмма это рабочая или вы так на показ привели, мол вы с чего начали и вам сказали, что это так нельзя? Или же это про запрос шла речь?

Цитата:
А надо по каждому ID_kass_kniga свой остаток + еще дату вывести и этот ИД книги
Ид касс книги | Дата | Остаток
001 | дата1 | остаток 1
Допустим приведенная модель рабочая, так там же есть такая таблица (Kass_Kniga), которая имеет все поля нужные для запроса.

Я не уловил суть вашей проблемы, перефразируйте пожалуста (желательно разложите все по полочкам)
Помог? Ну так нажми на весы!
SNUPY вне форума Ответить с цитированием
Старый 06.04.2008, 18:51   #3
mana
 
Регистрация: 06.04.2008
Сообщений: 7
По умолчанию

Все рабочее.
Проблема в расчетном поле, в том, что не знаю как вывести остатки c помощью селект запросов=) .
т.е. могу только вывести 1 общий остаток .т.е. все приходы - все расходы = остаток и ясно что подзапросы то возврашают одно значение поэтому не могу построчно вычесть, а надо чтоб отдельно вычислялся остаток для кажд ИД книги. Например есть записи:
Код:
Kass_kniga
ид кн| код рас сч|   дата         |  тут остаток который над вывести
001   |    00001   |   2008-03-29|остаток1 = приход-расход  при ид кн= 1
002   |    00002   |   2008-06-06|ост2 соответсветнно всех где ид кн =2   
003   |    00003   |   2008-11-23|         остат3
004   |    00004   |   2006-08-25|          остаток4 
005   |    00005   |   2008-12-04|      остаток5

Vipoln_operac                    
ид оп | код оп |ном счет|код контр| ид кн | ном орд  | сумма
00001|0000001|000001   |      001|    01   |12345      |20000  //  вот тут приход ниги 01
00002|0000002|000002   |      002|    02   |123456     |30000
00003|0000003|000003   |      003|    03   |12354      |42000
00004|0000004|000004   |      004|    04   |24565      |23000
00005|0000005|000005   |      005|    01   |35465      |34000 //  и тут приход книги 01 => остаток где 
                                                                            ид книги =01 будет 20000+34000
Spr_operac
  ид       тип оп   наименование
0000001|Приход|Поступление наличных от сбыта
0000002|Расход|Выдача наличных на аренду
0000003|Приход|Поступление наличных
0000004|Расход|Выдача наличных покупка ресурсов
0000005|Приход|Денюшка ляляля

Последний раз редактировалось mana; 06.04.2008 в 19:18.
mana вне форума Ответить с цитированием
Старый 06.04.2008, 20:00   #4
SNUPY
Форумчанин
 
Регистрация: 15.02.2008
Сообщений: 621
По умолчанию

Код:
Select Kass_Knigi.Id_knigi, Kass_Knigi.Kod_rach, Kass_Data, Ostatok1 From Kass_Knigi, 
   (Select Vipoln_Operac.Id_Knigi as Knigi1,
     SUM(CASE WHEN Spr_operac.Tip_Operac='Приходит' THEN
     Vipoln_Operac.Summa ELSE -Vipoln_Operac.Summa END) as Ostatok1
   from Tip_Operac, Vipoln_Operac 
   where Vipoln_Operac.Id_Operc=Vipoln_Operac.Id_Operc 
   Group by Knigi1) 
Where Knigi1=Kass_Knigi.Id_knigi;
ЗЫ ИМХО Spr_operac это избыточная таблица.
Помог? Ну так нажми на весы!

Последний раз редактировалось SNUPY; 06.04.2008 в 20:15.
SNUPY вне форума Ответить с цитированием
Старый 06.04.2008, 20:08   #5
mana
 
Регистрация: 06.04.2008
Сообщений: 7
По умолчанию

пасиба, сейчас попробую разобраться =) тему пока не закрывайте а то вдруг не разбирусь)

Последний раз редактировалось mana; 06.04.2008 в 20:14.
mana вне форума Ответить с цитированием
Старый 06.04.2008, 20:13   #6
SNUPY
Форумчанин
 
Регистрация: 15.02.2008
Сообщений: 621
По умолчанию

Сразу предупреждаю гарантий нет т.к. не тестил на Оракле(((( Да и имена надо будет помянять, т.к. было лень полностью их писать.
Помог? Ну так нажми на весы!
SNUPY вне форума Ответить с цитированием
Старый 06.04.2008, 20:21   #7
mana
 
Регистрация: 06.04.2008
Сообщений: 7
По умолчанию

угу меняю и у мя Sybase SQL Anywhere =)
Вам главное спасибо за идею по поводу того как сделать, а то у мя все кончились)

Последний раз редактировалось mana; 06.04.2008 в 20:24.
mana вне форума Ответить с цитированием
Старый 12.04.2008, 14:32   #8
mana
 
Регистрация: 06.04.2008
Сообщений: 7
По умолчанию

Итак продолжаю мучить вас своим расчетным полем :

Запрос работает правильно если в операциях есть и приход и расход и одинаковым ИД кассовой книги.
[B]Вопрос:
Как сделать чтобы запрос нормально работал если при одном и том же ИД касс книги есть только приход или только расход? А то у меня NULL выводит в таком случае а надо сумму

например если (при одинаковом ИД книги )
все расходы = 0 (их просто нет)
а все приходы = 50000 то надо вывести 50000

Код:
select kkn.id_kass_kniga,
     kkn.ostatok,
     ((select sum(summa)
          from (vipoln_operac as VOP JOIN Spr_operac as SPROP ON SPROP.kod_operac=VOP.kod_operac and                     
               SPROP.Type_operac='Приход')
          where 
                kkn.id_kass_kniga=VOP.id_kass_kniga 
          )
           -
      (select sum(summa)
          from (vipoln_operac as VOP JOIN Spr_operac as SPROP ON SPROP.kod_operac=VOP.kod_operac and                     
               SPROP.Type_operac='Расход')
          where kkn.id_kass_kniga=VOP.id_kass_kniga 
               ))as summa_calc     
     from kass_kniga as kkn;

Код:
Vipoln_operac            
           
00001|0000001|000001|001|01  |12345|20000
00002|0000002|000002|002|02  |123456|30000
00003|0000003|000003|003|03  |12354|42000
00004|0000004|000004|004|04  |24565|23000
00005|0000005|000005|005|01  |35465|34000
00006|0000002|000004|005|01  |896754|10000
00007|0000003|000002|002|02  |867554|5000
колонка 7 - сума денежная
колонка 2 - код операции (там узнается расход илил приход)
колонка 5 - ид кас книги

советовали is null написать перед скобками но выдает ошибки
не знаю куда is null писать
что найти и куда вывести - в таблицах выше


Последний раз редактировалось mana; 12.04.2008 в 14:40.
mana вне форума Ответить с цитированием
Старый 12.04.2008, 14:32   #9
mana
 
Регистрация: 06.04.2008
Сообщений: 7
По умолчанию

ой что то 2 раза написалось =)

Последний раз редактировалось mana; 12.04.2008 в 14:36.
mana вне форума Ответить с цитированием
Старый 13.04.2008, 15:13   #10
mana
 
Регистрация: 06.04.2008
Сообщений: 7
По умолчанию

А всё спасибо не надо хD сама сделала хD
mana вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите найти ошибку в SQL- запросе Tan БД в Delphi 2 03.04.2008 18:20
Проблема с Blob полем Constellation БД в Delphi 6 24.01.2008 18:58
ЗАПИСЬ В ФАЙЛ, РАБОТА С ТЕКСТОВЫМ ПОЛЕМ ERASERROR PHP 1 18.01.2008 19:21
Проблема с полем TMemo... Regloger Помощь студентам 8 07.12.2007 17:03
Ошибка в SQL запросе. Помогите найти. beginner Помощь студентам 4 30.05.2007 10:08