Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как в одном запросе посчитать количество строк для мастера и детэйла с группировкой
|
|||
|---|---|---|---|
|
#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?fid=40&msg=38959235&tid=1562851]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
75ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 268ms |
| total: | 431ms |

| 0 / 0 |
