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

Откуда:
Сообщений: 115
Есть три таблицы
Пункты
таблица KFR
P1, P2 и тд.
в пунктах есть точки A1, A2, И тд.
kfr pps
A1 P1
A2 P1
A3 P2


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


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


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


Если в пункте одна точка я сделал так
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


как сделать для пункта с несколькими точками
1 сен 17, 14:55    [20764814]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос  [new]
Мимопроходящий
Member

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

sidiscom, ты так и не открывал учебник по SQL...

Posted via ActualForum NNTP Server 1.5

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

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

Откуда: Москва
Сообщений: 253
Похоже на бухгалтерию. Дебет/Кредит, Сальдо/Бульдо.
1 сен 17, 15:09    [20764856]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос  [new]
sidiscom
Member

Откуда:
Сообщений: 115
да, так и есть
1 сен 17, 15:13    [20764864]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос  [new]
Arioch
Member

Откуда:
Сообщений: 9088
sidiscom
трудно доходит


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

http://www.sql.ru/forum/964534-a/hranimye-agregaty-bez-konfliktov-i-blokirovok-recept
1 сен 17, 15:36    [20764946]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос  [new]
KreatorXXI
Member

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

Вы сами посмотрели бы sum, group by. Хотя бы в руководстве по FB. Не говоря уже о другой литературе. Действительно, не хочется азы объяснять.
1 сен 17, 16:47    [20765230]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 26564
sidiscom
Баланс на каждый день по точке
Таблица BAL

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

Откуда:
Сообщений: 115
kdv
sidiscom
Баланс на каждый день по точке
Таблица BAL

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

тригер + процедуры после добавления записи в таблицу OPA
2 сен 17, 22:08    [20767343]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос  [new]
Старый плюшевый мишка
Member

Откуда:
Сообщений: 208
sidiscom
kdv
пропущено...

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

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


А через месяц приходит бухгалтер и говорит - тут наших "контрагентов" в очередной раз прижопили и вот эти 10 машин мы должны типа купить у другой фирмы за другие деньги и в другие даты, а вот эти семь продать двум другим и тоже не как было ;)
3 сен 17, 00:22    [20767591]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 26564
sidiscom
тригер + процедуры после добавления записи в таблицу OPA

"я так и знал". Повезло, что конфликтов по обновлению одной и той же записи нет. Операции, видимо, редкие.
В любом случае, придется учить sum и group by, об этом уже сказали.
3 сен 17, 00:26    [20767597]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 26564
Старый плюшевый мишка,

правильно написанным триггерам на update и delete это не помешает.
3 сен 17, 00:27    [20767600]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос  [new]
Старый плюшевый мишка
Member

Откуда:
Сообщений: 208
kdv
sidiscom
тригер + процедуры после добавления записи в таблицу OPA

"я так и знал". Повезло, что конфликтов по обновлению одной и той же записи нет. Операции, видимо, редкие.


Не операции редкие, а wait-транзакция и изменения приращениями, а не прочитал-изменил-записал.
3 сен 17, 01:42    [20767682]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос  [new]
Старый плюшевый мишка
Member

Откуда:
Сообщений: 208
kdv
Старый плюшевый мишка,

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


Дим. Я столько наелся с хранимыми оборотными ведомостями с архивами... Там с глузду съедешь корректировать ФСЁ, и продавца, и покупателя, и цены, и количества, и даты, и себестоимость, и вычерпанность ГТД, а если, не дай бог, это сырьё на переработку разной степени глубины, в смысле замены кода ТНВД или нет, и всё через месяц-другой, когда прошло тысяч десять операций по каждому товару... И помесячно и поквартально. Храниться должно только то, что уже железно передано в фискальные органы.
3 сен 17, 01:51    [20767689]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос  [new]
Старый плюшевый мишка
Member

Откуда:
Сообщений: 208
Вдогонку - это я о бухгалтерии, услышав слово "баланс". Управленческий учёт, то есть, всё по честному, как оно и есть - это другая тема.
3 сен 17, 01:53    [20767690]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос  [new]
fraks
Member

Откуда: Новосибирск
Сообщений: 1146
Старый плюшевый мишка
в смысле замены кода ТНВД


Может быть НГТД а не ТНВД?
4 сен 17, 04:04    [20768734]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос  [new]
Декларант
Guest
fraks
Старый плюшевый мишка
в смысле замены кода ТНВД
Может быть НГТД а не ТНВД?
Неа.

НГТД = Неполная (предварительная) ГТД. : документ.
ТНВД = Товарная номенклатура внешнеэкономической деятельности. : справочник кодов товаров из туевой хучи томов.
4 сен 17, 06:29    [20768766]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос  [new]
sidiscom
Member

Откуда:
Сообщений: 115
kdv
sidiscom
тригер + процедуры после добавления записи в таблицу OPA

"я так и знал". Повезло, что конфликтов по обновлению одной и той же записи нет. Операции, видимо, редкие.
В любом случае, придется учить sum и group by, об этом уже сказали.


Sum и group by по таблице BAL я разобрался (надеюсь)
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?
5 сен 17, 11:39    [20772091]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос  [new]
KreatorXXI
Member

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

а какую информацию нужно вытянуть из OPA?
5 сен 17, 12:05    [20772213]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 26564
sidiscom
Sum и group by по таблице BAL я разобрался (надеюсь)


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

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

то есть, в селекте выбираем столбцы group by плюс агрегаты.
5 сен 17, 12:27    [20772304]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос  [new]
KreatorXXI
Member

Откуда: Москва
Сообщений: 253
kdv
sidiscom
Sum и group by по таблице BAL я разобрался (надеюсь)


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

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

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


Необязательно. В group by могут быть поля, которых нет в select. Нечитаемо, это да.
5 сен 17, 13:32    [20772652]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос  [new]
sidiscom
Member

Откуда:
Сообщений: 115
kdv
sidiscom
Sum и group by по таблице BAL я разобрался (надеюсь)


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

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

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


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

KreatorXXI
sidiscom,

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


все строки за указанный период и принадлежащие пункту (например P1)
5 сен 17, 13:37    [20772669]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос  [new]
sidiscom
Member

Откуда:
Сообщений: 115
Я видимо не правильно объяснил
необходимо к строкам OPA добавить столбец исходящий остаток пункта на дату и вычисляемый входящий остаток на дату
и это все за указанный период
5 сен 17, 13:41    [20772693]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос  [new]
KreatorXXI
Member

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

Да всё равно непонятно (видимо, не только мне, поскольку все молчат). В чём разница таблиц BAL и OPA? Мне показалось BAL это уже на основе OPA. Нет?
5 сен 17, 15:30    [20773176]     Ответить | Цитировать Сообщить модератору
 Re: Сложный запрос  [new]
sidiscom
Member

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

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


да, в таблице BAL формируется исходящий остаток и обороты по дебету и кредиту за день
5 сен 17, 15:47    [20773296]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
Все форумы / Firebird, InterBase Ответить