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

Откуда:
Сообщений: 57687
sidiscom> данный запрос работает

И? Что в нём не устраивает? Скорость, результат?
Аналогичные вопросы по приведённым выше двум запросам.

Posted via ActualForum NNTP Server 1.5

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

Откуда:
Сообщений: 57687
sidiscom
OPA
(операции в течении дня, что-то покупается, что-то продается на кассах)
datsdskkfr
01.09.2017100A1

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

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


необходимо вывести операции за период с входящим и исходящим остатком магазина
(01.09.2017 - 02.09.2017 для магазина P1)
datsisdsksvkfr
01.09.2017301000A1

Присмотрелся повнимательнее к данным. Как получается 30 ?
12 сен 17, 09:55    [20789021]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос  [new]
KreatorXXI
Member

Откуда: Москва
Сообщений: 263
Гаджимурадов Рустам,

тут, по-моему вообще клиника. Посмотрите запрос ТС. BAL - это некие итого по OPA. А в запросе основная таблица OPA, а суммирование по BAL. Есть ещё подозрение, что схема данных совсем другая нежели описано.
12 сен 17, 10:16    [20789097]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос  [new]
sidiscom
Member

Откуда:
Сообщений: 115
Гаджимурадов Рустам
sidiscom
OPA
(операции в течении дня, что-то покупается, что-то продается на кассах)
datsdskkfr
01.09.2017100A1

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

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


необходимо вывести операции за период с входящим и исходящим остатком магазина
(01.09.2017 - 02.09.2017 для магазина P1)
datsisdsksvkfr
01.09.2017301000A1

Присмотрелся повнимательнее к данным. Как получается 30 ?


datsdskkfr
01.09.2017200A2

В этот день была еще одна проводка на кассе А2 на сумму 20 руб. Общий итог для магазина Р1 у которого кассы (А1 и А2) будет 30 руб
12 сен 17, 10:33    [20789143]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 57687
KreatorXXI> Посмотрите запрос ТС.

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

Posted via ActualForum NNTP Server 1.5

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

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

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


Это делать удобней, так как в таблице BAL кроме исходящего остатка на конец дня, уже есть общие суммы по дебету и по кредиту для кассы (А1 и А2). Получается надо просто сложить данные двух строк (для разных касс) принадлежащих одному магазину Р1
12 сен 17, 10:39    [20789168]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 57687
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)
kfrdatsisdsk
A202.09.20175015


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


Posted via ActualForum NNTP Server 1.5

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

Откуда:
Сообщений: 115
Гаджимурадов Рустам
KreatorXXI> Посмотрите запрос ТС.

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


я вроде объяснил почему такая сумма вышла. Перепроверил, цифры правильный
12 сен 17, 10:41    [20789175]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос  [new]
sidiscom
Member

Откуда:
Сообщений: 115
Гаджимурадов Рустам
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)
kfrdatsisdsk
A202.09.20175015


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




В кассе А2 была операция покупки на 20 рублей (01.09.2017) и продажа на 15 рублей (02.09.2017)
datsdskkfr
01.09.2017200A2
02.09.2017015A2


В таблице BAL (итоги формируются: исходящий остаток, сумма дебета и сумма кредита ) в разрезе даты и кассы
kfrdatsisdsk
A201.09.201720200
A202.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)
datsisdsksvkfr
02.09.20171501530A2
[/quot]

т.е. OPA для операции
datsdskkfr
02.09.2017015A2

добавив столбец исходящего остатка магазина и входящего остатка магазина, получим
datsdskkfrsisv
02.09.2017015A21530
12 сен 17, 10:59    [20789215]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос  [new]
KreatorXXI
Member

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

А может быть в таблице OPA сто записей для одной даты и одной кассы?
12 сен 17, 12:19    [20789488]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос  [new]
sidiscom
Member

Откуда:
Сообщений: 115
Да, может (это операции в течении дня)
13 сен 17, 08:38    [20791755]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос  [new]
KreatorXXI
Member

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

А в Вашем последненаписанном запросе никакого суммирования по OPA нет. В переводе - Ваш запрос не удовлетворяет Вашим же требованиям.
13 сен 17, 10:32    [20792054]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос  [new]
sidiscom
Member

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

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


мне суммирование по OPA не нужно, так как обороты по дебету и кредиту вычисляются в BAL
13 сен 17, 10:43    [20792099]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос  [new]
sidiscom
Member

Откуда:
Сообщений: 115
Добрый день
Всем большое спасибо, что помогли советами
остановился на таком решении:
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 ""


Тему можно закрывать
22 сен 17, 13:31    [20815683]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3]      все
Все форумы / Firebird, InterBase Ответить