Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как в одном запросе посчитать количество строк для мастера и детэйла с группировкой
|
|||
|---|---|---|---|
|
#18+
Есть 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 Подскажите, пожалуйста, как оптимальнее решить эту задачу. Или может где-то подобная проблема уже описана? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2015, 17:35 |
|
||
|
Как в одном запросе посчитать количество строк для мастера и детэйла с группировкой
|
|||
|---|---|---|---|
|
#18+
студенты потянулись,сезон... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2015, 17:37 |
|
||
|
Как в одном запросе посчитать количество строк для мастера и детэйла с группировкой
|
|||
|---|---|---|---|
|
#18+
Hello, Анна Карасикова! You wrote on 14 мая 2015 г. 17:39:41: Анна Карасикова> Что нужно: написать хранимую процедуру в чем печаль твоих обид? (с) Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2015, 17:39 |
|
||
|
Как в одном запросе посчитать количество строк для мастера и детэйла с группировкой
|
|||
|---|---|---|---|
|
#18+
Gallemar, мой вопрос не относиться к учёбе, совсем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2015, 17:40 |
|
||
|
Как в одном запросе посчитать количество строк для мастера и детэйла с группировкой
|
|||
|---|---|---|---|
|
#18+
Анна Карасикова> Gallemar, мой вопрос не относиться к учёбе, совсем. ...и кто ж тебя, убогую, на работу-то взял?.. :-( -- Vladimir A.Bakhvaloff Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2015, 17:42 |
|
||
|
Как в одном запросе посчитать количество строк для мастера и детэйла с группировкой
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий. Извините за неправильно сформулированный вопрос. Будет лучше если сформулипровать так: "как правильно и оптимально написать ХП для ..."? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2015, 17:42 |
|
||
|
Как в одном запросе посчитать количество строк для мастера и детэйла с группировкой
|
|||
|---|---|---|---|
|
#18+
Анна Карасиковамой вопрос не относиться к учёбе, совсем. Тогда из него следует как минимум исключить условие "одним запросом". Ну а потом RTFM CASE. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2015, 17:43 |
|
||
|
Как в одном запросе посчитать количество строк для мастера и детэйла с группировкой
|
|||
|---|---|---|---|
|
#18+
Hello, Анна Карасикова! You wrote on 14 мая 2015 г. 17:45:15: Анна Карасикова> "как правильно и оптимально написать ХП для ..."? пиши неоптимально, мы поправим. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2015, 17:44 |
|
||
|
Как в одном запросе посчитать количество строк для мастера и детэйла с группировкой
|
|||
|---|---|---|---|
|
#18+
Я думала здесь конкретные решения подскажут, а не будут оскорбления писать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2015, 17:44 |
|
||
|
Как в одном запросе посчитать количество строк для мастера и детэйла с группировкой
|
|||
|---|---|---|---|
|
#18+
Анна Карасикова, ну и как вы думали, что вам подскажут конкретные решения для ВАШЕЙ конкретной задачи? Тут подсказывают разве что если "у меня вот так не получается". А у вас вроде бы вообще пока никак не получается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2015, 17:46 |
|
||
|
Как в одном запросе посчитать количество строк для мастера и детэйла с группировкой
|
|||
|---|---|---|---|
|
#18+
Анна Карасикова, Вот придет Таблоид - он напишет. С деревом и рекурсией ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2015, 17:47 |
|
||
|
Как в одном запросе посчитать количество строк для мастера и детэйла с группировкой
|
|||
|---|---|---|---|
|
#18+
Анна Карасикова> Я думала здесь конкретные решения подскажут, а не будут оскорбления писать... Поскажут!.. Только с фоткой topless!.. -- Vladimir A.Bakhvaloff Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2015, 17:48 |
|
||
|
Как в одном запросе посчитать количество строк для мастера и детэйла с группировкой
|
|||
|---|---|---|---|
|
#18+
Мой вариант для случая без разделения по кодам услуг: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2015, 18:02 |
|
||
|
Как в одном запросе посчитать количество строк для мастера и детэйла с группировкой
|
|||
|---|---|---|---|
|
#18+
В основном меня интересует, как в одном запросе посчитать количество записей в мастер-таблице и детейл-таблице с группировкой по N-ому количеству полей мастера без двойного обращения к мастер-таблице. Или такое в принципе не возможно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2015, 18:07 |
|
||
|
Как в одном запросе посчитать количество строк для мастера и детэйла с группировкой
|
|||
|---|---|---|---|
|
#18+
Анна Карасикова> В основном меня интересует, как в одном запросе посчитать количество записей в мастер-таблице и детейл-таблице с группировкой по N-ому количеству полей мастера без двойного обращения к мастер-таблице. > Или такое в принципе не возможно? / смотрим, девушка сурьёзная... topless не прокатит / Наводящий вопрос: а занафига такое вообще понадобилось в запросе-то?.. Пришло на клиента - там и зри!.. -- Vladimir A.Bakhvaloff Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2015, 18:10 |
|
||
|
Как в одном запросе посчитать количество строк для мастера и детэйла с группировкой
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2015, 18:10 |
|
||
|
Как в одном запросе посчитать количество строк для мастера и детэйла с группировкой
|
|||
|---|---|---|---|
|
#18+
Анна КарасиковаВ основном меня интересует, как в одном запросе посчитать количество записей в мастер-таблице и детейл-таблице с группировкой по N-ому количеству полей мастера без двойного обращения к мастер-таблице. Или такое в принципе не возможно?это делается кейсом (CASE) 17641256 например: COUNT(CASE WHEN Table1.Field1=1 AND Table2.Field2=2 THEN 1 END) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2015, 18:14 |
|
||
|
Как в одном запросе посчитать количество строк для мастера и детэйла с группировкой
|
|||
|---|---|---|---|
|
#18+
zirra Наводящий вопрос: а занафига такое вообще понадобилось в запросе-то?.. Пришло на клиента - там и зри!.. -- Vladimir A.Bakhvaloff под запросом я имела ввиду выборку данных в хранимой процедуре, типа "for select " Такого рода расчеты периодически требуются в отчетах различных проектов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2015, 18:23 |
|
||
|
Как в одном запросе посчитать количество строк для мастера и детэйла с группировкой
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий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 сравнивала с мои, он работает чуточку медленнее, чем мой, на несколько миллисекунд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2015, 18:29 |
|
||
|
Как в одном запросе посчитать количество строк для мастера и детэйла с группировкой
|
|||
|---|---|---|---|
|
#18+
Анна Карасикова, что за функция Z? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2015, 18:39 |
|
||
|
Как в одном запросе посчитать количество строк для мастера и детэйла с группировкой
|
|||
|---|---|---|---|
|
#18+
Анна КарасиковаВ основном меня интересует, как в одном запросе посчитать количество записей в мастер-таблице и детейл-таблице с группировкой по N-ому количеству полей мастера без двойного обращения к мастер-таблице. Или такое в принципе не возможно? Возможно. RTFM COUNT(DISTINCT). Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2015, 18:44 |
|
||
|
Как в одном запросе посчитать количество строк для мастера и детэйла с группировкой
|
|||
|---|---|---|---|
|
#18+
Поручик ·· Ржевский , получается без двойного обращения к мастеру всё таки не обойтись? Или я уже совсем туплю, потому что никак не могу понять как условная выборка значения поможет в расчете количества строк для мастера и детэйла одновременно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2015, 18:44 |
|
||
|
Как в одном запросе посчитать количество строк для мастера и детэйла с группировкой
|
|||
|---|---|---|---|
|
#18+
Симонов Денисчто за функция Z? Скорее всего из rfunc. Эквивалентна Код: sql 1. возвращает DOUBLE PRECISION ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2015, 18:45 |
|
||
|
Как в одном запросе посчитать количество строк для мастера и детэйла с группировкой
|
|||
|---|---|---|---|
|
#18+
Анна Карасиковаполучается без двойного обращения к мастеру всё таки не обойтись? Сначала расскажите зачем Вы обращаетесь к нему дважды и чем Вас не устроил простой Код: sql 1. 2. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2015, 18:48 |
|
||
|
Как в одном запросе посчитать количество строк для мастера и детэйла с группировкой
|
|||
|---|---|---|---|
|
#18+
Шавлюк Евгений. Функция "Z" из библиотеки rfunc, она возвращает либо значение входного параметра(число), либо 0, если входной параметр = Null. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2015, 18:49 |
|
||
|
Как в одном запросе посчитать количество строк для мастера и детэйла с группировкой
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovАнна Карасиковаполучается без двойного обращения к мастеру всё таки не обойтись? Сначала расскажите зачем Вы обращаетесь к нему дважды и чем Вас не устроил простой Код: sql 1. 2. Спасибо за совет! Просто раньше с этим не сталкивалась и не знала о таком варианте запроса. Для других задач это решение подойдёт, но не для этой конкретной задачи. Потому что в услугах одного случая могут быть разные значения группируемых полей. То есть данные выглядят примерно так: Случаи ИД; ФИО_Вр; Спец; 1; ФИО_1; Спец_1 2; ФИО_2; Спец_1 3; ФИО_1; Спец_2 Услуги ИД; ИД_случая; ФИО_Вр; Спец; 1; 1; ФИО_1; Спец_1 2; 1; ФИО_2; Спец_1 3; 2; ФИО_2; Спец_1 4; 2; ФИО_2; Спец_1 5; 2; ФИО_2; Спец_1 6; 3; ФИО_1; Спец_2 7; 3; ФИО_3; Спец_2 И в результате отчета должно получиться ФИО_Вр; Спец; Случаев; Услуг ФИО_1; Спец_1; 1; 1 ФИО_1; Спец_2; 1; 1 ФИО_2; Спец_1; 1; 4 ФИО_3; Спец_2; 0; 1 А получиться ФИО_1; Спец_1; 1; 2 ФИО_2; Спец_1; 1; 3 ФИО_1; Спец_2; 1; 2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2015, 19:21 |
|
||
|
Как в одном запросе посчитать количество строк для мастера и детэйла с группировкой
|
|||
|---|---|---|---|
|
#18+
Для начала Вам надо бы определиться какая у вас таблица - мастер, а какая - деталь и как они вообще связаны между собой. Анна КарасиковаА получиться А потом - поменять тип джоина на соответствующий. PS: всё-таки прежде чем писать сложные запросы надо научиться писать простые. PPS: А за нарушение первой НФ в аду для разработчиков БД придумано отдельное наказание. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2015, 19:28 |
|
||
|
Как в одном запросе посчитать количество строк для мастера и детэйла с группировкой
|
|||
|---|---|---|---|
|
#18+
Анна КарасиковаЕсть 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)). какие знакомые буковки.. Напишите мне, мыло в профиле.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2015, 19:34 |
|
||
|
Как в одном запросе посчитать количество строк для мастера и детэйла с группировкой
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovДля начала Вам надо бы определиться какая у вас таблица - мастер, а какая - деталь и как они вообще связаны между собой. PS: всё-таки прежде чем писать сложные запросы надо научиться писать простые. PPS: А за нарушение первой НФ в аду для разработчиков БД придумано отдельное наказание. Обе рассматриваемые таблицы удовлетворяют всем правилам 1NF! Поясню суть данных: таблица List_Cases содержит данные о законченных случаях лечения, в ней указывается лечащий врач; в таблице List_Usl содержатся данные об оказанных услугах в рамках законченного случая лечения, и в ней указывается врач, выполнивший конкретную услугу. В требуемом отчете нужно сгруппировать данные о врачах, оказывавших разовые услуги и закрывающих случаи лечения. Получается в этом конкретном примере без двойного обращения к таблице случаев не обойтись, из-за необходимости группировки различных по смыслу типов данных. А для другого рода задач COUNT(DISTINCT master.id) подойдёт. Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2015, 19:48 |
|
||
|
Как в одном запросе посчитать количество строк для мастера и детэйла с группировкой
|
|||
|---|---|---|---|
|
#18+
Анна КарасиковаПоясню суть данных: таблица List_Cases содержит данные о законченных случаях лечения, в ней указывается лечащий врач; в таблице List_Usl содержатся данные об оказанных услугах в рамках законченного случая лечения, и в ней указывается врач, выполнивший конкретную услугу. В требуемом отчете нужно сгруппировать данные о врачах, оказывавших разовые услуги и закрывающих случаи лечения. Повторяю вопрос ещё раз, медленно: как (каким отношением) эти таблицы связаны и кто из них мастер? PS: На то, что прикреплённая тема будет хоть кем-то прочитана, я уже и не надеюсь... Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2015, 20:01 |
|
||
|
Как в одном запросе посчитать количество строк для мастера и детэйла с группировкой
|
|||
|---|---|---|---|
|
#18+
Анна КарасиковаИ в результате отчета должно получиться ФИО_Вр; Спец; Случаев; Услуг ФИО_1; Спец_1; 1; 1 ФИО_1; Спец_2; 1; 1 ФИО_2; Спец_1; 1; 4 ФИО_3; Спец_2; 0; 1 Код: sql 1. 2. 3. 4. 5. и всё, никаких ХП. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2015, 20:10 |
|
||
|
Как в одном запросе посчитать количество строк для мастера и детэйла с группировкой
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, если бы вы внимательней читали, по-моему, у вас вопросов не возникло бы. В первом сообщении темы в описании структуры: Анна КарасиковаЕсть 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)). Мастер-таблица - это List_cases - Случаи, дочерняя таблица - List_Usl - Услуги. Они связаны через идентификатор случая. В упрощённом описании структуры это поля Case_ID , в примере запроса я указал конкретные названия полей. В базе эти таблицы связаны так: list_cases.list_cases_id => list_usl.rf_case_id ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2015, 20:18 |
|
||
|
Как в одном запросе посчитать количество строк для мастера и детэйла с группировкой
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov Возможно. RTFM COUNT(DISTINCT). Сразу извиняюсь за глупый вопрос, но что значит "RTFM"? Раньше с этим буквосочетанием не встречалась. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2015, 21:20 |
|
||
|
Как в одном запросе посчитать количество строк для мастера и детэйла с группировкой
|
|||
|---|---|---|---|
|
#18+
Анна КарасиковаDimitry SibiryakovВозможно. RTFM COUNT(DISTINCT). Сразу извиняюсь за глупый вопрос, но что значит "RTFM"? Раньше с этим буквосочетанием не встречалась. Read The Fucking Manual (Читайте ёбаную инструкцию) — употребляемый в Интернете ответ на тривиальный вопрос, ответ на который находится в документации/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2015, 21:44 |
|
||
|
Как в одном запросе посчитать количество строк для мастера и детэйла с группировкой
|
|||
|---|---|---|---|
|
#18+
Политкорректно - Fined :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2015, 21:49 |
|
||
|
Как в одном запросе посчитать количество строк для мастера и детэйла с группировкой
|
|||
|---|---|---|---|
|
#18+
Всем спасибо за ответы! Впредь буду внимательней читать мануалы. :-) Эту задачу решила через 2 ХП: в первой поочерёдно считаю количество, количество услуг по одной группе параметров и количество услуг по другой группе параметров по каждому типу данных; во второй запрос с условным подсчётом количества случаев и услуг. Может вторая процедура и не очень-то нужно, но у нас в коллективе принято все выборки для отчетов формировать в ХП. Чтобы было понятней вот выходные параметры первой процедуры: VR_FIO D_V_0022, VR_SPEC D_V_0010, TIP D_V_0020, COUNT_CASE D_INTEGER, COUNT_POS D_INTEGER, COUNT_USL D_INTEGER и запрос из второй процедуры: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2015, 13:42 |
|
||
|
|

start [/forum/topic.php?all=1&fid=40&tid=1562851]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
71ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
| others: | 263ms |
| total: | 439ms |

| 0 / 0 |
