powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вьюшка с параметрами
25 сообщений из 34, страница 1 из 2
Вьюшка с параметрами
    #39744332
Hadroran
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет.
Есть задача показать две таблицы.
В первой - Перечень организаций клиентов с общей суммой закупок за весь период.
Для нее была создана вьюшка
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
CREATE OR ALTER VIEW V_SUMCSTM(
    ID,
    V_CSTM_NAME,
    V_SUM)
AS
SELECT CSTM.ID,
            CSTM.SHRTNAME,
            COALESCE(sum(SCCNT.V_SUM), 0)
                                                                            
FROM CUSTOMERS CSTM, V_SUMCCNT SCCNT

WHERE SCCNT.ID_CSTM = CSTM.ID

GROUP BY
       CSTM.ID,
       CSTM.SHRTNAME
;


Во второй - Непосредственно контакты организаций с общей суммой закупок за весь период.
И для нее была создана вьюшка
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
CREATE OR ALTER VIEW V_SUMCCNT(
    ID,
    ID_CSTM,
    V_CCNT_NAME,
    V_SUM)
AS
SELECT CCNT.ID,
       CCNT.ID_CUSTOMER,
       CCNT.V_CONTACTNAME,
       COALESCE((select sum(V_SUM) from V_ORDER where ID_CUSTCONTACT = CCNT.ID and V_RECORDSTATUS in (4)), 0)

FROM V_CUSTCONTACT CCNT
;


CUSTOMERS - Таблица организаций клиентов
V_CUSTCONTACT - Таблица контактов организаций клиентов
V_ORDER - Таблица заказов

В таком виде все работает. Но встала задача организовать вывод данных по интервалу даты продаж. Поле с датой продажи находится в таблице V_ORDER.

Подскажите, как это можно реализовать? Т.к. вьюшки зависимые, кроме того, как пересоздавать на сервере новые вьюшки с выбором диапазона даты продаж и удалять старые, ничего пока в голову не приходит.

Спасибо.
...
Рейтинг: 0 / 0
Вьюшка с параметрами
    #39744337
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hadroran,

вьюху можно связать с таблицей. Не проблема. Но лучше, наверно, сделать другую вьюху под новые требования. У Вас всё на вьюхах построено?
...
Рейтинг: 0 / 0
Вьюшка с параметрами
    #39744340
Hadroran
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
KreatorXXI,
А что "всё", простите? Есть и таблицы с данными и вьюхи, консолидирующие их.
...
Рейтинг: 0 / 0
Вьюшка с параметрами
    #39744344
Hadroran
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
KreatorXXI,

Данный отчет необходимо организовать из данных таблицы V_ORDER. Может как-нить по другому можно это решить?
...
Рейтинг: 0 / 0
Вьюшка с параметрами
    #39744346
Hadroran
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пробовал сделать так
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
CREATE OR ALTER VIEW V_SUMCSTM(
    ID,
    V_CSTM_NAME,
    V_SUM)
AS
SELECT CSTM.ID,
       CSTM.SHRTNAME,
       COALESCE(sum((select sum(V_PROFIT) from V_ORDER where ID_CUSTCONTACT = CCNT.ID and V_RECORDSTATUS in (4))), 0)
                                                                            
FROM CUSTOMERS CSTM, V_ORDER ORD

WHERE ORD.ID_CUSTOMER = CSTM.ID

GROUP BY
       CSTM.ID,
       CSTM.SHRTNAME
;


Но ошибка упирается в переборку контактов клиента (ID_CUSTCONTACT = CCNT.ID).
...
Рейтинг: 0 / 0
Вьюшка с параметрами
    #39744348
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
внутри вьюх параметры не живут.

зы: но их можно пристегнуть снаружи.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вьюшка с параметрами
    #39744354
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да он же там в них уже сгруппировал данные без учета дат, как понимаю. Т.е. Даты уже
сделали ему ручкой и применить те вьюхи к новой постановке уже не получится.
...
Рейтинг: 0 / 0
Вьюшка с параметрами
    #39744371
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hadroranкак это можно реализовать?

1. Выкинуть вьюхи.
2. Написать запрос.
3. Избавиться от аксессовских привычек (опционально).
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вьюшка с параметрами
    #39744375
Hadroran
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vlad F,
На начальном этапе - да. Вьюхи без условия на дату. Но это легко исправляется
Код: sql
1.
COALESCE((select sum(V_SUM) from V_ORDER where ID_CUSTCONTACT = CCNT.ID and V_RECORDSTATUS in (4) AND V_SALEDATE >= '01.12.2018'), 0)


Но это внизу. Как сверху диапазон спустить?
...
Рейтинг: 0 / 0
Вьюшка с параметрами
    #39744379
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для любителей прыжков в ширину:

делаем gtt табличку с полями id_connection, dt1, dt2
в триггере на инсерт оной таблички заполняем коннект current_connect -ом
ну и пару дат пишем, вестимо.

далее джойн с этой табличкой по каррент_коннекту вполне протолкнет во вьюху искомые параметры.

Вот только непонятно, зачем это городить для отчета, обычный запрос с параметрами и вуаля.
...
Рейтинг: 0 / 0
Вьюшка с параметрами
    #39744384
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_Pisarevskyделаем gtt табличку с полями id_connectionЗачем в GTT это поле ?



Hadroran,

не нужно насиловать инструмент (view), нужно научиться его правильно выбирать и применять.
...
Рейтинг: 0 / 0
Вьюшка с параметрами
    #39744389
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hadroran,

а чем банальный запрос по V_Order с group by не подходит? Я просто думаю - в чём причина использования вьюхи. Может это принципиально?
...
Рейтинг: 0 / 0
Вьюшка с параметрами
    #39744391
Hadroran
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

Допустим...
1. Выкинули.
2. В датасет SUMCCNT мы переписываем запрос из соответствующей вьюхи с добавлением диапазона дат. В ответе получаем список всех контактов с суммами продаж. Кто был неактивен, тому дарим "нолик". А как сформировать запрос в датасет SUMCSTM, чтобы получить сумму на всю организацию по всем активным контактам?

3. А в чём эта хрень вылезла?
...
Рейтинг: 0 / 0
Вьюшка с параметрами
    #39744394
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladЗачем в GTTда, в гтт необязательно, "масло-масляное". можнотлибо стационарную табличку с коннектом, либо гтт.
KreatorXXIЯ просто думаю - в чём причина использования вьюхи.Есть места, где это удобно. Причем удобно, чтобы параметры хранились отдельно, например, с привязкой к логину юзера.
...
Рейтинг: 0 / 0
Вьюшка с параметрами
    #39744400
Hadroran
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ребята, вьюхи не обязательны. Тему так обозвал, что для решения этого не хватало. Знаю, что так не бывает. Забудем про вьюхи... Просто в голове что-то не туда повернулось. Может про сиськи думаю.... Нет не про них. Про запросы.
"банальный запрос по V_Order с group by" подойдет. Но я не понимаю как потом разбить его данные на две части?
...
Рейтинг: 0 / 0
Вьюшка с параметрами
    #39744403
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hadroran,

Походу вам надо приглашать программиста. В штат.))
...
Рейтинг: 0 / 0
Вьюшка с параметрами
    #39744404
Hadroran
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vlad F,

Ты думаешь он про сиськи думать не будет?
...
Рейтинг: 0 / 0
Вьюшка с параметрами
    #39744406
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HadroranА как сформировать запрос в датасет SUMCSTM, чтобы получить сумму на всю организацию по
всем активным контактам?

1. Изучить SQL. В особенности внимательно - раздел "агрегатные функции".
2. Изучить используемый инструмент. В особенности внимательно - возможности агрегирования
"на лету".

Hadroran3. А в чём эта хрень вылезла?
В использовании view там, где весь остальной мир использует просто запросы.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вьюшка с параметрами
    #39744409
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P.S. Без полного приведения метаданных и повторной аккуратной формулировки поставленной
задачи тебе, имхо, никто не поможет. И даже с ними, не факт что кто то захочет разбираться,
хотя и не исключено. Все таки этот форум немного не про SQL алгоритмы, а про особенности
Firebird (прошу без обид).
...
Рейтинг: 0 / 0
Вьюшка с параметрами
    #39744410
Hadroran
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
кароче ясно... пашел учить...
...
Рейтинг: 0 / 0
Вьюшка с параметрами
    #39744411
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HadroranVlad F,

Ты думаешь он про сиськи думать не будет?
Редкий программист про них не думает, но мне, напрример, это совершенно не мешает.))
...
Рейтинг: 0 / 0
Вьюшка с параметрами
    #39744412
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HadroranРебята, вьюхи не обязательны. Тему так обозвал, что для решения этого не хватало. Знаю, что так не бывает. Забудем про вьюхи... Просто в голове что-то не туда повернулось. Может про сиськи думаю.... Нет не про них. Про запросы.
"банальный запрос по V_Order с group by" подойдет. Но я не понимаю как потом разбить его данные на две части?
А какие две части? Давай с нуля. Что нужно получить?
...
Рейтинг: 0 / 0
Вьюшка с параметрами
    #39744419
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hadroran,

есть несколько вариантов

1. Использовать вместо вьюх запросы
2. В некоторых случаях можно написать вьюху так чтобы к ней можно было делать внешний запрос с параметрами
3. Использовать селективные хранимые процедуры с параметрами
4. Если параметры глобальные для сессии можно внутри вьюхи использовать контекстные переменные
...
Рейтинг: 0 / 0
Вьюшка с параметрами
    #39744422
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис4. Если параметры глобальные для сессии можно внутри вьюхи использовать контекстные переменные

Не учи люде плохому. Нубы всегда хватаются за этот вариант и поток говнокода потом уже не
остановить.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вьюшка с параметрами
    #39744425
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hadroran,

про запросы. Если мозг всё ещё думает в терминах SELECT FROM VIEW JOIN VIEW JOIN TABLE, то попробуй изучить CTE. Каждая CTEшка почти тоже самое что вьюха, только не храниться в метаданных. Но правда общий запрос может быть большим
...
Рейтинг: 0 / 0
25 сообщений из 34, страница 1 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вьюшка с параметрами
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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