powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Сложный запрос
25 сообщений из 64, страница 2 из 3
Сложный запрос
    #39515874
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sidiscom,

Значит OPA не причём? Если Вы написали запрос по суммированию за месяц, то исходящий остаток вычисляется также, только период дат берётся другой, например:
Код: sql
1.
b.dat < '01.08.2017'


Можно ещё воспользоваться оконными функциями, чтобы получить то, что надо в одном запросе.
...
Рейтинг: 0 / 0
Сложный запрос
    #39515887
sidiscom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
KreatorXXI,

Мне нужно вывести все строки из OPA за указанный период и принадлежащие, например Р1
и добавить столбец исходящего остатка P1 на каждую дату
ppskfrdatsisdskP1A101.09.201715100P1A201.09.201715200P1A201.09.201715015
...
Рейтинг: 0 / 0
Сложный запрос
    #39515917
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sidiscom,

А вот так:
Код: sql
1.
2.
3.
select a.*, b.si
from OPA a
       inner join BAL b on b.kfr=a.kfr and b.dat=a.dat


?

Это ВСЕ строки из OPA плюс исходящий остаток из BAL.
...
Рейтинг: 0 / 0
Сложный запрос
    #39515922
sidiscom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
KreatorXXIsidiscom,

А вот так:
Код: sql
1.
2.
3.
select a.*, b.si
from OPA a
       inner join BAL b on b.kfr=a.kfr and b.dat=a.dat


?

Это ВСЕ строки из OPA плюс исходящий остаток из BAL.

это получиться по точкам, kfr, а мне нужен баланс пункта, pps
поэтому рекомендовали sum и group by
...
Рейтинг: 0 / 0
Сложный запрос
    #39516649
sidiscom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может есть у кого-то еще советы
...
Рейтинг: 0 / 0
Сложный запрос
    #39516655
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
книжки по SQL читай.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Сложный запрос
    #39516662
sidiscom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мимопроходящийкнижки по SQL читай.

этот совет я и без Вас знаю,
почему, когда люди знают намного больше других, они корону одевают?
Вы во всех областях такой же шустрый?
...
Рейтинг: 0 / 0
Сложный запрос
    #39516665
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
06.09.2017 17:27, sidiscom пишет:
> этот совет я и без Вас знаю

почему не читаешь?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Сложный запрос
    #39516670
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sidiscom,

Надо переформулировать требования. Вы сказали "мне нужны все строки из OPA". Не так? Не нужны? Или что?
...
Рейтинг: 0 / 0
Сложный запрос
    #39516679
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sidiscom,

если трудности с пониманием агрегатов, тупо посчитай "руками", в ХП или в EB. Или на клиенте. Наши студенты часто так делают.
...
Рейтинг: 0 / 0
Сложный запрос
    #39516680
sidiscom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мимопроходящий06.09.2017 17:27, sidiscom пишет:
> этот совет я и без Вас знаю

почему не читаешь?


я читаю, и все ваши советы я прорабатываю
но Вы понимаете это с первого раза, Ваше мышление это позволяет, мне так не дано
я не прошу Вас написать запрос за меня, прошу направить

KreatorXXIsidiscom,

Надо переформулировать требования. Вы сказали "мне нужны все строки из OPA". Не так? Не нужны? Или что?

за указанный период к строкам из ОPA добавляется столбец SI (исходящий остаток) всего пункта, а не этой точки
...
Рейтинг: 0 / 0
Сложный запрос
    #39517008
sidiscom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
чччДsidiscom,

если трудности с пониманием агрегатов, тупо посчитай "руками", в ХП или в EB. Или на клиенте. Наши студенты часто так делают.

Т.е.
Код: plsql
1.
2.
3.
4.
5.
SELECT * 
FROM OPA O
JOIN KFR K ON K.KFR=O.KFR
LEFT JOIN MY_PROC(DATSTART, DATEND, PPS) ON ......
WHERE K.PPS = '' AND DAT BETWEEN '' AND ''



MY_PROC -процедура которая возвращает набор значений (дата, исходящий остаток на эту дату, входящий остаток на дату)

P.S.
не пинайте сильно
...
Рейтинг: 0 / 0
Сложный запрос
    #39517200
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sidiscomМимопроходящий06.09.2017 17:27, sidiscom пишет:
> этот совет я и без Вас знаю

почему не читаешь?


я читаю, и все ваши советы я прорабатываю
но Вы понимаете это с первого раза, Ваше мышление это позволяет, мне так не дано
я не прошу Вас написать запрос за меня, прошу направить

KreatorXXIsidiscom,

Надо переформулировать требования. Вы сказали "мне нужны все строки из OPA". Не так? Не нужны? Или что?

за указанный период к строкам из ОPA добавляется столбец SI (исходящий остаток) всего пункта, а не этой точки

Как всего пункта? В таблице BAL у Вас же информация по точкам.

Я всё же предлагаю заново объяснить проблему. Привести DDL таблиц, чтобы были понятно содержимое столбцов, связи таблиц. И внятно написать - что хотите получить.

А хранимка нафиг не нужна. Ради 3-5 строчек запроса писать храмимку?
...
Рейтинг: 0 / 0
Сложный запрос
    #39518982
sidiscom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть таблицы
(на примере торговли)
PPS
(справочник магазинов)
idpps1P12P23P3

KFR
(справочник касс в магазинах)
ppskfrP1A1P1A2P2A3P3A4

OPA
(операции в течении дня, что-то покупается, что-то продается на кассах)
datsdskkfr01.09.2017100A101.09.2017200A202.09.2017015A2
sd- сумма дебет
sk - сумма кредит

BAL
(таблица сальдо кассы, заполняется процедурой на основании документа OPA)
kfrdatsisdskA101.09.201710100A201.09.201720200A202.09.20175015

необходимо вывести операции за период с входящим и исходящим остатком магазина
(01.09.2017 - 02.09.2017 для магазина P1)
datsisdsksvkfr01.09.2017301000A101.09.2017302000A202.09.20171501530A2
...
Рейтинг: 0 / 0
Сложный запрос
    #39519022
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sidiscomнеобходимо вывести операции за период с входящим и исходящим остаткомЕсли будут свои попытки решения, то 0, иначе $100 и запрос будет готов минут через 10.
...
Рейтинг: 0 / 0
Сложный запрос
    #39519049
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sidiscom,

Попробуйте вот так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
select a.kfr,
         ( select c.si
          from BAL c
          where c.kfr=a.kfr and c.dat='2017-09-01'
        ),
        sum(a.sd),
        sum(a.sk),  
         ( select d.si + a.sd - a.sk
          from BAL d
          where d.kfr=a.kfr and d.dat='2017-09-30'
        )
from BAL a
       inner join KFR b on b.kfr=a.kfr
where b.pps='P1' and a.dat between '2017-09-01' and '2017-09-30'
group by 1, 2, 5
...
Рейтинг: 0 / 0
Сложный запрос
    #39519101
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KreatorXXIsidiscom,

Попробуйте вот так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
select a.kfr,
         ( select c.si
          from BAL c
          where c.kfr=a.kfr and c.dat='2017-09-01'
        ),
        sum(a.sd),
        sum(a.sk),  
         ( select d.si + a.sd - a.sk
          from BAL d
          where d.kfr=a.kfr and d.dat='2017-09-30'
        )
from BAL a
       inner join KFR b on b.kfr=a.kfr
where b.pps='P1' and a.dat between '2017-09-01' and '2017-09-30'
group by 1, 2, 5

У меня подозрение, что работать это будет не быстро, лучше движуху приджойнить, а не получать позапросом.
счематично:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select a.kfr, b.dat
        sum(a.sd),
        sum(сase when ПРИХОД)  as debet      
        sum(case when РАСХОД)  as credit
        sum(a.sk),  
from BAL a
       inner join KFR b on b.kfr=a.kfr
       left join OPA d on d.kfr=a.kfr and d.dat = b.dat
where b.pps='P1' and a.dat between '2017-09-01' and '2017-09-30'
group by 1,2
...
Рейтинг: 0 / 0
Сложный запрос
    #39519155
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_Pisarevsky,

Спорить пока рано. Не ясно - правильно вообще или нет. Я посчитал, что таблица BAL это уже некое суммирование по OPA. Индексы тоже не известны.
...
Рейтинг: 0 / 0
Сложный запрос
    #39519169
sidiscom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
KreatorXXIIvan_Pisarevsky,

Спорить пока рано. Не ясно - правильно вообще или нет. Я посчитал, что таблица BAL это уже некое суммирование по OPA. Индексы тоже не известны.

BAL это таблица в которой суммируются приход, расход и вычисляется исходящий остаток в разрезе касс на основании документов OPA
...
Рейтинг: 0 / 0
Сложный запрос
    #39519196
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sidiscomBAL это таблица...С твоей стороны таки будут попытки решения? Или топик отправляется в утиль.
...
Рейтинг: 0 / 0
Сложный запрос
    #39519239
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не понимаю, как вы вообще с серьёзными лицами таблицу OPA обсуждаете.
...
Рейтинг: 0 / 0
Сложный запрос
    #39519246
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSeryЯ не понимаю, как вы вообще с серьёзными лицами таблицу OPA обсуждаете.Какое тут обсуждение? Руки чешутся грохнуть нафиг.
...
Рейтинг: 0 / 0
Сложный запрос
    #39519316
Фотография Старый плюшевый мишка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSeryЯ не понимаю, как вы вообще с серьёзными лицами таблицу OPA обсуждаете.

Там двух буков не хватает. ZH.
...
Рейтинг: 0 / 0
Сложный запрос
    #39519358
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OPAZH!

Хватит уже глумиться, закрывайте.
Только в теге укажите автору, что
пусть показывает свои неудачные
попытки решить сабж.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Сложный запрос
    #39519652
sidiscom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гаджимурадов РустамOPAZH!

Хватит уже глумиться, закрывайте.
Только в теге укажите автору, что
пусть показывает свои неудачные
попытки решить сабж.


Спасибо, теперь я понимаю откуда у Вас такое количество сообщений

Моих очень скромных познаний хватило только на вложенные запросы
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT o.dat,o.sd,o.sk,
(SELECT sum(b.si) FROM bal b ......) as si,
(SELECT (sum(b.si)-sum(b.sd)+sum(b.sk)) FROM bal b .....) as sv
FROM opa o
JOIN kfr k ON k.kfr=o.kfr 
WHERE 
k.pps = ''
AND 
o.dat between "" and ""



данный запрос работает, понимаю, что это не то решение которое должно было получиться
...
Рейтинг: 0 / 0
25 сообщений из 64, страница 2 из 3
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Сложный запрос
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]