powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Сложный запрос
64 сообщений из 64, показаны все 3 страниц
Сложный запрос
    #39514140
sidiscom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть три таблицы
Пункты
таблица KFR
P1, P2 и тд.
в пунктах есть точки A1, A2, И тд.
kfr ppsA1 P1A2 P1A3 P2

Операции в течении дня по точкам
Таблица OPA
sd- сумма дебет
sk - сумма кредит
dat -Дата
kfr sd sk datA1 10 0 01.09.2017A2 20 0 01.09.2017A2 0 15 01.09.2017

Баланс на каждый день по точке
Таблица BAL
si - исходящий баоланс
od - по дебету
ok - по кредиту
kfr dat si od okA1 01.09.2017 10 10 0A2 01.09.2017 5 20 15

необходимо получить итог по пункту
чтобы исходящий остаток si (пункта) был как сумма si точек
sv = si - od+ ok
dat si sd sk sv01.09.2017 15 10 0 001.09.2017 15 20 0 001.09.2017 15 0 015

Если в пункте одна точка я сделал так
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
SELECT
b.dat,b.si,o.sd, o.sk
(b.si - b.od + b.ok) AS sv
FROM
bal b, opa o
WHERE
o.dat=b.dat
AND
o.dat between '01.08.2017' AND '31.08.2017'
AND
o.kfr=b.kfr and b.kfr = 'A1'
ORDER BY
b.dat



как сделать для пункта с несколькими точками
...
Рейтинг: 0 / 0
Сложный запрос
    #39514143
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sidiscom, ты так и не открывал учебник по SQL...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Сложный запрос
    #39514152
sidiscom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мимопроходящий,
трудно доходит, многое не понимаю, но стараюсь
...
Рейтинг: 0 / 0
Сложный запрос
    #39514153
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Похоже на бухгалтерию. Дебет/Кредит, Сальдо/Бульдо.
...
Рейтинг: 0 / 0
Сложный запрос
    #39514155
sidiscom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да, так и есть
...
Рейтинг: 0 / 0
Сложный запрос
    #39514171
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sidiscomтрудно доходит

предлагаю нырнуть в омут с головой

http://www.sql.ru/forum/964534-a/hranimye-agregaty-bez-konfliktov-i-blokirovok-recept
...
Рейтинг: 0 / 0
Сложный запрос
    #39514219
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sidiscom,

Вы сами посмотрели бы sum, group by. Хотя бы в руководстве по FB. Не говоря уже о другой литературе. Действительно, не хочется азы объяснять.
...
Рейтинг: 0 / 0
Сложный запрос
    #39514246
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sidiscomБаланс на каждый день по точке
Таблица BAL
интересно, а как у вас эта таблица заполняется?
...
Рейтинг: 0 / 0
Сложный запрос
    #39514515
sidiscom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdvsidiscomБаланс на каждый день по точке
Таблица BAL
интересно, а как у вас эта таблица заполняется?
тригер + процедуры после добавления записи в таблицу OPA
...
Рейтинг: 0 / 0
Сложный запрос
    #39514592
Фотография Старый плюшевый мишка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sidiscomkdvпропущено...

интересно, а как у вас эта таблица заполняется?
тригер + процедуры после добавления записи в таблицу OPA

А через месяц приходит бухгалтер и говорит - тут наших "контрагентов" в очередной раз прижопили и вот эти 10 машин мы должны типа купить у другой фирмы за другие деньги и в другие даты, а вот эти семь продать двум другим и тоже не как было ;)
...
Рейтинг: 0 / 0
Сложный запрос
    #39514593
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sidiscomтригер + процедуры после добавления записи в таблицу OPA
"я так и знал". Повезло, что конфликтов по обновлению одной и той же записи нет. Операции, видимо, редкие.
В любом случае, придется учить sum и group by, об этом уже сказали.
...
Рейтинг: 0 / 0
Сложный запрос
    #39514594
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Старый плюшевый мишка,

правильно написанным триггерам на update и delete это не помешает.
...
Рейтинг: 0 / 0
Сложный запрос
    #39514601
Фотография Старый плюшевый мишка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvsidiscomтригер + процедуры после добавления записи в таблицу OPA
"я так и знал". Повезло, что конфликтов по обновлению одной и той же записи нет. Операции, видимо, редкие.


Не операции редкие, а wait-транзакция и изменения приращениями, а не прочитал-изменил-записал.
...
Рейтинг: 0 / 0
Сложный запрос
    #39514602
Фотография Старый плюшевый мишка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvСтарый плюшевый мишка,

правильно написанным триггерам на update и delete это не помешает.

Дим. Я столько наелся с хранимыми оборотными ведомостями с архивами... Там с глузду съедешь корректировать ФСЁ, и продавца, и покупателя, и цены, и количества, и даты, и себестоимость, и вычерпанность ГТД, а если, не дай бог, это сырьё на переработку разной степени глубины, в смысле замены кода ТНВД или нет, и всё через месяц-другой, когда прошло тысяч десять операций по каждому товару... И помесячно и поквартально. Храниться должно только то, что уже железно передано в фискальные органы.
...
Рейтинг: 0 / 0
Сложный запрос
    #39514603
Фотография Старый плюшевый мишка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вдогонку - это я о бухгалтерии, услышав слово "баланс". Управленческий учёт, то есть, всё по честному, как оно и есть - это другая тема.
...
Рейтинг: 0 / 0
Сложный запрос
    #39514822
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Старый плюшевый мишкав смысле замены кода ТНВД

Может быть НГТД а не ТНВД?
...
Рейтинг: 0 / 0
Сложный запрос
    #39514823
Декларант
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fraksСтарый плюшевый мишкав смысле замены кода ТНВД Может быть НГТД а не ТНВД?Неа.

НГТД = Неполная (предварительная) ГТД. : документ.
ТНВД = Товарная номенклатура внешнеэкономической деятельности. : справочник кодов товаров из туевой хучи томов.
...
Рейтинг: 0 / 0
Сложный запрос
    #39515564
sidiscom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdvsidiscomтригер + процедуры после добавления записи в таблицу OPA
"я так и знал". Повезло, что конфликтов по обновлению одной и той же записи нет. Операции, видимо, редкие.
В любом случае, придется учить sum и group by, об этом уже сказали.

Sum и group by по таблице BAL я разобрался (надеюсь)
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select b.dat, sum(b.si) as si from bal  b
join kfr k on b.kfr = k.kfr
where
k.pps = 'P1'
and
b.dat between '01.08.2017' AND '31.08.2017'
and
b.nls = '241.1'
group by k.pps,  b.dat



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

а какую информацию нужно вытянуть из OPA?
...
Рейтинг: 0 / 0
Сложный запрос
    #39515596
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sidiscomSum и group by по таблице BAL я разобрался (надеюсь)

нет. должно быть

select k.pps, b.dat, sum(b.si)
group by k.pps, b.dat

то есть, в селекте выбираем столбцы group by плюс агрегаты.
...
Рейтинг: 0 / 0
Сложный запрос
    #39515653
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvsidiscomSum и group by по таблице BAL я разобрался (надеюсь)

нет. должно быть

select k.pps, b.dat, sum(b.si)
group by k.pps, b.dat

то есть, в селекте выбираем столбцы group by плюс агрегаты.

Необязательно. В group by могут быть поля, которых нет в select. Нечитаемо, это да.
...
Рейтинг: 0 / 0
Сложный запрос
    #39515658
sidiscom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdvsidiscomSum и group by по таблице BAL я разобрался (надеюсь)

нет. должно быть

select k.pps, b.dat, sum(b.si)
group by k.pps, b.dat

то есть, в селекте выбираем столбцы group by плюс агрегаты.

Спасибо большое

KreatorXXIsidiscom,

а какую информацию нужно вытянуть из OPA?

все строки за указанный период и принадлежащие пункту (например P1)
...
Рейтинг: 0 / 0
Сложный запрос
    #39515663
sidiscom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я видимо не правильно объяснил
необходимо к строкам OPA добавить столбец исходящий остаток пункта на дату и вычисляемый входящий остаток на дату
и это все за указанный период
...
Рейтинг: 0 / 0
Сложный запрос
    #39515793
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sidiscom,

Да всё равно непонятно (видимо, не только мне, поскольку все молчат). В чём разница таблиц BAL и OPA? Мне показалось BAL это уже на основе OPA. Нет?
...
Рейтинг: 0 / 0
Сложный запрос
    #39515823
sidiscom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
KreatorXXIsidiscom,

Да всё равно непонятно (видимо, не только мне, поскольку все молчат). В чём разница таблиц BAL и OPA? Мне показалось BAL это уже на основе OPA. Нет?

да, в таблице BAL формируется исходящий остаток и обороты по дебету и кредиту за день
...
Рейтинг: 0 / 0
Сложный запрос
    #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
Сложный запрос
    #39519662
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sidiscom> данный запрос работает

И? Что в нём не устраивает? Скорость, результат?
Аналогичные вопросы по приведённым выше двум запросам.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Сложный запрос
    #39519696
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sidiscomOPA
(операции в течении дня, что-то покупается, что-то продается на кассах)
datsdskkfr01.09.2017 10 0A1
sd- сумма дебет
sk - сумма кредит

BAL
(таблица сальдо кассы, заполняется процедурой на основании документа OPA)
kfrdatsisdskA101.09.2017 10 100

необходимо вывести операции за период с входящим и исходящим остатком магазина
(01.09.2017 - 02.09.2017 для магазина P1)
datsisdsksvkfr01.09.2017 30 1000A1
Присмотрелся повнимательнее к данным. Как получается 30 ?
...
Рейтинг: 0 / 0
Сложный запрос
    #39519715
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,

тут, по-моему вообще клиника. Посмотрите запрос ТС. BAL - это некие итого по OPA. А в запросе основная таблица OPA, а суммирование по BAL. Есть ещё подозрение, что схема данных совсем другая нежели описано.
...
Рейтинг: 0 / 0
Сложный запрос
    #39519724
sidiscom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гаджимурадов РустамsidiscomOPA
(операции в течении дня, что-то покупается, что-то продается на кассах)
datsdskkfr01.09.2017 10 0A1
sd- сумма дебет
sk - сумма кредит

BAL
(таблица сальдо кассы, заполняется процедурой на основании документа OPA)
kfrdatsisdskA101.09.2017 10 100

необходимо вывести операции за период с входящим и исходящим остатком магазина
(01.09.2017 - 02.09.2017 для магазина P1)
datsisdsksvkfr01.09.2017 30 1000A1
Присмотрелся повнимательнее к данным. Как получается 30 ?

datsdskkfr01.09.2017 20 0A2
В этот день была еще одна проводка на кассе А2 на сумму 20 руб. Общий итог для магазина Р1 у которого кассы (А1 и А2) будет 30 руб
...
Рейтинг: 0 / 0
Сложный запрос
    #39519726
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KreatorXXI> Посмотрите запрос ТС.

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

тут, по-моему вообще клиника. Посмотрите запрос ТС. BAL - это некие итого по OPA. А в запросе основная таблица OPA, а суммирование по BAL. Есть ещё подозрение, что схема данных совсем другая нежели описано.

Это делать удобней, так как в таблице BAL кроме исходящего остатка на конец дня, уже есть общие суммы по дебету и по кредиту для кассы (А1 и А2). Получается надо просто сложить данные двух строк (для разных касс) принадлежащих одному магазину Р1
...
Рейтинг: 0 / 0
Сложный запрос
    #39519729
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sidiscom(01.09.2017 - 02.09.2017 для магазина P1)
dat si sd sk sv kfr
01.09.2017 30 10 0 0 A1

dat sd sk kfr
01.09.2017 20 0 A2

В этот день была еще одна проводка на кассе А2 на сумму 20 руб. Общий итог для магазина Р1 у которого кассы (А1 и А2) будет 30 руб

Чушь какая-то... ОК, допустим, что это нарастающий итог
по магазину, типа OVER и к кассе в строках не относится.
Тогда что со следующими двумя строками:

BAL
(таблица сальдо кассы, заполняется процедурой на основании документа OPA)
kfrdatsisdskA202.09.2017 5 015

необходимо вывести операции за период с входящим и исходящим остатком магазина
(01.09.2017 - 02.09.2017 для магазина P1)
datsisdsksvkfr02.09.2017150 15 30 A2

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

Запросы ТС - это ладно, ошибиться нубу немудрено.
Но данные исходные и желаемые-то он должен
правильно привести хотя бы.


я вроде объяснил почему такая сумма вышла. Перепроверил, цифры правильный
...
Рейтинг: 0 / 0
Сложный запрос
    #39519741
sidiscom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гаджимурадов Рустамsidiscom(01.09.2017 - 02.09.2017 для магазина P1)
dat si sd sk sv kfr
01.09.2017 30 10 0 0 A1

dat sd sk kfr
01.09.2017 20 0 A2

В этот день была еще одна проводка на кассе А2 на сумму 20 руб. Общий итог для магазина Р1 у которого кассы (А1 и А2) будет 30 руб

Чушь какая-то... ОК, допустим, что это нарастающий итог
по магазину, типа OVER и к кассе в строках не относится.
Тогда что со следующими двумя строками:

BAL
(таблица сальдо кассы, заполняется процедурой на основании документа OPA)
kfrdatsisdskA202.09.2017 5 015

необходимо вывести операции за период с входящим и исходящим остатком магазина
(01.09.2017 - 02.09.2017 для магазина P1)
datsisdsksvkfr02.09.2017150 15 30 A2



В кассе А2 была операция покупки на 20 рублей (01.09.2017) и продажа на 15 рублей (02.09.2017)
datsdskkfr01.09.2017200A202.09.2017015A2

В таблице BAL (итоги формируются: исходящий остаток, сумма дебета и сумма кредита ) в разрезе даты и кассы
kfrdatsisdskA201.09.201720200A202.09.20175015
итог на вечер 02.09.2017 остаток в кассе А2 = 5 рублей

а по магазину итог это как исходящий остаток кассы А1 + А2
остаток А1 = 10 руб (на 01.09.2017) так как 02.09.2017 операций не было то и на 02.09.2017 остаток равен 10 руб
Итого исходящий остаток в магазине Р1 = 10+5 = 15
а так как
необходимо вывести операции за период с входящим и исходящим остатком магазина (не кассы)
(01.09.2017 - 02.09.2017 для магазина P1)
datsisdsksvkfr02.09.20171501530A2[/quot]

т.е. OPA для операции
datsdskkfr02.09.2017015A2
добавив столбец исходящего остатка магазина и входящего остатка магазина, получим
datsdskkfrsisv02.09.2017015A21530
...
Рейтинг: 0 / 0
Сложный запрос
    #39519790
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sidiscom,

А может быть в таблице OPA сто записей для одной даты и одной кассы?
...
Рейтинг: 0 / 0
Сложный запрос
    #39520214
sidiscom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, может (это операции в течении дня)
...
Рейтинг: 0 / 0
Сложный запрос
    #39520272
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sidiscom,

А в Вашем последненаписанном запросе никакого суммирования по OPA нет. В переводе - Ваш запрос не удовлетворяет Вашим же требованиям.
...
Рейтинг: 0 / 0
Сложный запрос
    #39520281
sidiscom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
KreatorXXIsidiscom,

А в Вашем последненаписанном запросе никакого суммирования по OPA нет. В переводе - Ваш запрос не удовлетворяет Вашим же требованиям.

мне суммирование по OPA не нужно, так как обороты по дебету и кредиту вычисляются в BAL
...
Рейтинг: 0 / 0
Сложный запрос
    #39524847
sidiscom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день
Всем большое спасибо, что помогли советами
остановился на таком решении:
Код: 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
64 сообщений из 64, показаны все 3 страниц
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Сложный запрос
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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