powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Как в одном запросе посчитать количество строк для мастера и детэйла с группировкой
25 сообщений из 36, страница 1 из 2
Как в одном запросе посчитать количество строк для мастера и детэйла с группировкой
    #38959030
Есть 2 связанные таблицы:
"Случаи" - LIST_CASES(Case_ID Integer, RF_ID integer, PHYS_ID varchar(22), CODE_SPEC varchar(10), TARGET integer),
"Услуги" - LIST_USL(USL_ID Integer, Case_ID Integer, RF_ID integer, PHYS_ID varchar(22), CODE_SPEC varchar(10), K_USL integer, CODE_USL varchar(20)).
Уточнения: RF_ID - идентификатор вышестоящей мастер-талблицы, во входных параметрах известен нужный диапазон значений; K_USL - для всех услуг =1, так что count(*)=sum(k_usl).

Что нужно: написать хранимую процедуру, в которой для каждого уникального сочетания PHYS_ID и CODE_SPEC будет подсчитано количество случаев и услуг для различных диапазонов TARGET, и для некоторых вариантов TARGET нужно считать количество услуг по разным диапазонам CODE_USL; при чем значения для каждого диапозон TARGET должены быть в отдельном столбце(этот момент решила реализовать через использование 2-х ХП, в одной считаю по каждому диапазону целей отдельно, в другой группирую и суммирую).
Главная проблема в том, что не хочется дважды обращаться к таблице случаев.

FireBird 2.5

Подскажите, пожалуйста, как оптимальнее решить эту задачу. Или может где-то подобная проблема уже описана?
...
Рейтинг: 0 / 0
Как в одном запросе посчитать количество строк для мастера и детэйла с группировкой
    #38959032
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
студенты потянулись,сезон...
...
Рейтинг: 0 / 0
Как в одном запросе посчитать количество строк для мастера и детэйла с группировкой
    #38959036
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Анна Карасикова!
You wrote on 14 мая 2015 г. 17:39:41:

Анна Карасикова> Что нужно: написать хранимую процедуру
в чем печаль твоих обид? (с)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как в одном запросе посчитать количество строк для мастера и детэйла с группировкой
    #38959038
Gallemar, мой вопрос не относиться к учёбе, совсем.
...
Рейтинг: 0 / 0
Как в одном запросе посчитать количество строк для мастера и детэйла с группировкой
    #38959043
Фотография zirra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анна Карасикова> Gallemar, мой вопрос не относиться к учёбе, совсем.
...и кто ж тебя, убогую, на работу-то взял?.. :-(

--
Vladimir A.Bakhvaloff
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как в одном запросе посчитать количество строк для мастера и детэйла с группировкой
    #38959045
Мимопроходящий. Извините за неправильно сформулированный вопрос.
Будет лучше если сформулипровать так: "как правильно и оптимально написать ХП для ..."?
...
Рейтинг: 0 / 0
Как в одном запросе посчитать количество строк для мастера и детэйла с группировкой
    #38959047
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анна Карасиковамой вопрос не относиться к учёбе, совсем.
Тогда из него следует как минимум исключить условие "одним запросом". Ну а потом RTFM CASE.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как в одном запросе посчитать количество строк для мастера и детэйла с группировкой
    #38959052
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Анна Карасикова!
You wrote on 14 мая 2015 г. 17:45:15:

Анна Карасикова> "как правильно и оптимально написать ХП для ..."?
пиши неоптимально, мы поправим.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как в одном запросе посчитать количество строк для мастера и детэйла с группировкой
    #38959053
Я думала здесь конкретные решения подскажут, а не будут оскорбления писать...
...
Рейтинг: 0 / 0
Как в одном запросе посчитать количество строк для мастера и детэйла с группировкой
    #38959061
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анна Карасикова,

ну и как вы думали, что вам подскажут конкретные решения для ВАШЕЙ конкретной задачи?
Тут подсказывают разве что если "у меня вот так не получается". А у вас вроде бы вообще пока никак не получается.
...
Рейтинг: 0 / 0
Как в одном запросе посчитать количество строк для мастера и детэйла с группировкой
    #38959064
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анна Карасикова,

Вот придет Таблоид - он напишет. С деревом и рекурсией ;)
...
Рейтинг: 0 / 0
Как в одном запросе посчитать количество строк для мастера и детэйла с группировкой
    #38959066
Фотография zirra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анна Карасикова> Я думала здесь конкретные решения подскажут, а не будут оскорбления писать...
Поскажут!.. Только с фоткой topless!..

--
Vladimir A.Bakhvaloff
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как в одном запросе посчитать количество строк для мастера и детэйла с группировкой
    #38959082
Мой вариант для случая без разделения по кодам услуг:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
for select tu.phys_id, tu.code_spec, z(sum(tu.k_uslf)) as k_uslf
   from list_usl tu
   where tu.rf_case_id in (select tc.list_cases_id from list_cases tc where tc.target in (1,2,3,4,5,20)and tc.q_u=2
                           and (:r_str like '%,'||trim(cast(tc.rf_reestr_id as varchar(20)))||',%') )
   group by 1,2
  into :vr_fio, :vr_spec, :pos  do
  begin
    select z(count(*)) from list_cases tc
     where (:r_str like '%,'||trim(cast(tc.rf_reestr_id as varchar(20)))||',%')
      and tc.q_u=2 and tc.target in (1,2,3,4,5,20) and tc.phys_id=:vr_fio and tc.code_spec=:vr_spec
    into :kol;
    suspend;
  end
...
Рейтинг: 0 / 0
Как в одном запросе посчитать количество строк для мастера и детэйла с группировкой
    #38959089
В основном меня интересует, как в одном запросе посчитать количество записей в мастер-таблице и детейл-таблице с группировкой по N-ому количеству полей мастера без двойного обращения к мастер-таблице. Или такое в принципе не возможно?
...
Рейтинг: 0 / 0
Как в одном запросе посчитать количество строк для мастера и детэйла с группировкой
    #38959095
Фотография zirra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анна Карасикова> В основном меня интересует, как в одном запросе посчитать количество записей в мастер-таблице и детейл-таблице с группировкой по N-ому количеству полей мастера без двойного обращения к мастер-таблице.
> Или такое в принципе не возможно?
/ смотрим, девушка сурьёзная... topless не прокатит /
Наводящий вопрос: а занафига такое вообще понадобилось в запросе-то?.. Пришло на клиента - там и зри!..

--
Vladimir A.Bakhvaloff
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как в одном запросе посчитать количество строк для мастера и детэйла с группировкой
    #38959096
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Анна Карасикова!

> from list_usl tu
> where tu.rf_case_id in (select...

замени на

from list_usl tu
join list_cases tc on tu.rf_case_id = tc.list_cases_id
where tc.target in (...

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как в одном запросе посчитать количество строк для мастера и детэйла с группировкой
    #38959098
Поручик ·· Ржевский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анна КарасиковаВ основном меня интересует, как в одном запросе посчитать количество записей в мастер-таблице и детейл-таблице с группировкой по N-ому количеству полей мастера без двойного обращения к мастер-таблице. Или такое в принципе не возможно?это делается кейсом (CASE) 17641256

например:

COUNT(CASE WHEN Table1.Field1=1 AND Table2.Field2=2 THEN 1 END)
...
Рейтинг: 0 / 0
Как в одном запросе посчитать количество строк для мастера и детэйла с группировкой
    #38959111
zirra
Наводящий вопрос: а занафига такое вообще понадобилось в запросе-то?.. Пришло на клиента - там и зри!..

--
Vladimir A.Bakhvaloff

под запросом я имела ввиду выборку данных в хранимой процедуре, типа "for select "
Такого рода расчеты периодически требуются в отчетах различных проектов.
...
Рейтинг: 0 / 0
Как в одном запросе посчитать количество строк для мастера и детэйла с группировкой
    #38959118
МимопроходящийHello, Анна Карасикова!

> from list_usl tu
> where tu.rf_case_id in (select...

замени на

from list_usl tu
join list_cases tc on tu.rf_case_id = tc.list_cases_id
where tc.target in (...


Вариант с JOIN сравнивала с мои, он работает чуточку медленнее, чем мой, на несколько миллисекунд.
...
Рейтинг: 0 / 0
Как в одном запросе посчитать количество строк для мастера и детэйла с группировкой
    #38959127
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анна Карасикова,

что за функция Z?
...
Рейтинг: 0 / 0
Как в одном запросе посчитать количество строк для мастера и детэйла с группировкой
    #38959130
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анна КарасиковаВ основном меня интересует, как в одном запросе посчитать количество
записей в мастер-таблице и детейл-таблице с группировкой по N-ому количеству полей мастера
без двойного обращения к мастер-таблице. Или такое в принципе не возможно?
Возможно. RTFM COUNT(DISTINCT).
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как в одном запросе посчитать количество строк для мастера и детэйла с группировкой
    #38959131
Поручик ·· Ржевский , получается без двойного обращения к мастеру всё таки не обойтись? Или я уже совсем туплю, потому что никак не могу понять как условная выборка значения поможет в расчете количества строк для мастера и детэйла одновременно.
...
Рейтинг: 0 / 0
Как в одном запросе посчитать количество строк для мастера и детэйла с группировкой
    #38959133
Шавлюк Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисчто за функция Z?

Скорее всего из rfunc.
Эквивалентна
Код: sql
1.
coalesce(:param, 0e0)

возвращает DOUBLE PRECISION
...
Рейтинг: 0 / 0
Как в одном запросе посчитать количество строк для мастера и детэйла с группировкой
    #38959136
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анна Карасиковаполучается без двойного обращения к мастеру всё таки не обойтись?
Сначала расскажите зачем Вы обращаетесь к нему дважды и чем Вас не устроил простой
Код: sql
1.
2.
select ..., count(distinct master.id), count(*) from master join detail on ...
group by ....


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как в одном запросе посчитать количество строк для мастера и детэйла с группировкой
    #38959139
Шавлюк Евгений.
Функция "Z" из библиотеки rfunc, она возвращает либо значение входного параметра(число), либо 0, если входной параметр = Null.
...
Рейтинг: 0 / 0
25 сообщений из 36, страница 1 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Как в одном запросе посчитать количество строк для мастера и детэйла с группировкой
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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