Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Firebird, InterBase Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
 Re: Сложный запрос  [new]
KreatorXXI
Member

Откуда: Москва
Сообщений: 263
sidiscom,

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

Можно ещё воспользоваться оконными функциями, чтобы получить то, что надо в одном запросе.
5 сен 17, 16:29    [20773450]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос  [new]
sidiscom
Member

Откуда:
Сообщений: 115
KreatorXXI,

Мне нужно вывести все строки из OPA за указанный период и принадлежащие, например Р1
и добавить столбец исходящего остатка P1 на каждую дату
ppskfrdatsisdsk
P1A101.09.201715100
P1A201.09.201715200
P1A201.09.201715015
5 сен 17, 16:40    [20773487]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос  [new]
KreatorXXI
Member

Откуда: Москва
Сообщений: 263
sidiscom,

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

?

Это ВСЕ строки из OPA плюс исходящий остаток из BAL.
5 сен 17, 17:22    [20773601]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос  [new]
sidiscom
Member

Откуда:
Сообщений: 115
KreatorXXI
sidiscom,

А вот так:
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
5 сен 17, 17:33    [20773625]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос  [new]
sidiscom
Member

Откуда:
Сообщений: 115
Может есть у кого-то еще советы
6 сен 17, 17:15    [20776302]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 28455

книжки по SQL читай.

Posted via ActualForum NNTP Server 1.5

6 сен 17, 17:18    [20776313]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос  [new]
sidiscom
Member

Откуда:
Сообщений: 115
Мимопроходящий
книжки по SQL читай.

этот совет я и без Вас знаю,
почему, когда люди знают намного больше других, они корону одевают?
Вы во всех областях такой же шустрый?
6 сен 17, 17:27    [20776354]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 28455

06.09.2017 17:27, sidiscom пишет:
> этот совет я и без Вас знаю

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

Posted via ActualForum NNTP Server 1.5

6 сен 17, 17:29    [20776363]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос  [new]
KreatorXXI
Member

Откуда: Москва
Сообщений: 263
sidiscom,

Надо переформулировать требования. Вы сказали "мне нужны все строки из OPA". Не так? Не нужны? Или что?
6 сен 17, 17:32    [20776372]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос  [new]
чччД
Guest
sidiscom,

если трудности с пониманием агрегатов, тупо посчитай "руками", в ХП или в EB. Или на клиенте. Наши студенты часто так делают.
6 сен 17, 17:41    [20776398]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос  [new]
sidiscom
Member

Откуда:
Сообщений: 115
Мимопроходящий
06.09.2017 17:27, sidiscom пишет:
> этот совет я и без Вас знаю

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


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

KreatorXXI
sidiscom,

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


за указанный период к строкам из ОPA добавляется столбец SI (исходящий остаток) всего пункта, а не этой точки
6 сен 17, 17:43    [20776401]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос  [new]
sidiscom
Member

Откуда:
Сообщений: 115
чччД
sidiscom,

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


Т.е.
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.
не пинайте сильно
7 сен 17, 09:56    [20777431]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос  [new]
KreatorXXI
Member

Откуда: Москва
Сообщений: 263
sidiscom
Мимопроходящий
06.09.2017 17:27, sidiscom пишет:
> этот совет я и без Вас знаю

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


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

KreatorXXI
sidiscom,

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


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


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

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

А хранимка нафиг не нужна. Ради 3-5 строчек запроса писать храмимку?
7 сен 17, 11:37    [20777963]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос  [new]
sidiscom
Member

Откуда:
Сообщений: 115
Есть таблицы
(на примере торговли)
PPS
(справочник магазинов)
idpps
1P1
2P2
3P3


KFR
(справочник касс в магазинах)
ppskfr
P1A1
P1A2
P2A3
P3A4


OPA
(операции в течении дня, что-то покупается, что-то продается на кассах)
datsdskkfr
01.09.2017100A1
01.09.2017200A2
02.09.2017015A2

sd- сумма дебет
sk - сумма кредит

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


необходимо вывести операции за период с входящим и исходящим остатком магазина
(01.09.2017 - 02.09.2017 для магазина P1)
datsisdsksvkfr
01.09.2017301000A1
01.09.2017302000A2
02.09.20171501530A2
11 сен 17, 09:17    [20785688]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос  [new]
Ivan_Pisarevsky
Member

Откуда: НН
Сообщений: 7810
sidiscom
необходимо вывести операции за период с входящим и исходящим остатком
Если будут свои попытки решения, то 0, иначе $100 и запрос будет готов минут через 10.
11 сен 17, 10:30    [20785904]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос  [new]
KreatorXXI
Member

Откуда: Москва
Сообщений: 263
sidiscom,

Попробуйте вот так:
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
11 сен 17, 11:19    [20786062]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос  [new]
Ivan_Pisarevsky
Member

Откуда: НН
Сообщений: 7810
KreatorXXI
sidiscom,

Попробуйте вот так:
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
У меня подозрение, что работать это будет не быстро, лучше движуху приджойнить, а не получать позапросом.
счематично:
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
11 сен 17, 12:31    [20786332]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос  [new]
KreatorXXI
Member

Откуда: Москва
Сообщений: 263
Ivan_Pisarevsky,

Спорить пока рано. Не ясно - правильно вообще или нет. Я посчитал, что таблица BAL это уже некое суммирование по OPA. Индексы тоже не известны.
11 сен 17, 13:50    [20786722]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос  [new]
sidiscom
Member

Откуда:
Сообщений: 115
KreatorXXI
Ivan_Pisarevsky,

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


BAL это таблица в которой суммируются приход, расход и вычисляется исходящий остаток в разрезе касс на основании документов OPA
11 сен 17, 14:03    [20786774]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос  [new]
Ivan_Pisarevsky
Member

Откуда: НН
Сообщений: 7810
sidiscom
BAL это таблица...
С твоей стороны таки будут попытки решения? Или топик отправляется в утиль.
11 сен 17, 14:24    [20786870]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос  [new]
WildSery
Member

Откуда: да, оттуда.
Сообщений: 12910
Я не понимаю, как вы вообще с серьёзными лицами таблицу OPA обсуждаете.
11 сен 17, 15:08    [20787103]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос  [new]
Ivan_Pisarevsky
Member

Откуда: НН
Сообщений: 7810
WildSery
Я не понимаю, как вы вообще с серьёзными лицами таблицу OPA обсуждаете.
Какое тут обсуждение? Руки чешутся грохнуть нафиг.
11 сен 17, 15:18    [20787169]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос  [new]
Старый плюшевый мишка
Member

Откуда:
Сообщений: 256
WildSery
Я не понимаю, как вы вообще с серьёзными лицами таблицу OPA обсуждаете.


Там двух буков не хватает. ZH.
11 сен 17, 16:36    [20787563]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 57674
OPAZH!

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

Posted via ActualForum NNTP Server 1.5

11 сен 17, 17:11    [20787733]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос  [new]
sidiscom
Member

Откуда:
Сообщений: 115
Гаджимурадов Рустам
OPAZH!

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


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

Моих очень скромных познаний хватило только на вложенные запросы
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 ""


данный запрос работает, понимаю, что это не то решение которое должно было получиться
12 сен 17, 08:54    [20788812]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
Все форумы / Firebird, InterBase Ответить