|
Селект задваиает столбцы
|
|||
---|---|---|---|
#18+
Добрый день! Подскажите, нужно получить количество выполненных и назначенных запросов, но при выводе получаем два одинаковых столбца с количеством выполненных запросов, подозреваю что где-то спряталась логическая ошибка (у селектов немного разное условие и присоединение к таблице tbl_employee производится различными ключами), но не пойму где select e.title AS "ФИО сотрудника", count (distinct sc.id) as "Количество Назначенных запросов", count (distinct sc1.number_) as "Количество Выполненных запросов" from tbl_servicecall sc join tbl_servicecall sc1 on sc.number_=sc1.number_ join tbl_log tl on tl.story$request=sc.id join tbl_employee e on e.id=tl.story$currentresp_em join tbl_ou ou on ou.id=e.parent_id where tl.story$currstatecode='firstLine' and tl.story$prevstatecode='waitfirstLine' and sc.creation_date between current_date and current_date+1 and ou.title like 'Отдел' and sc1.id in (select distinct sc2.id from tbl_servicecall sc2 left join tbl_employee e on e.id=sc2.solvedbyemployee_id left join tbl_ou ou on ou.id=e.parent_id left join tbl_employee e1 on e1.id=sc2.resp2line_em where sc2.datedecision between current_date and current_date+1 -- выполнено за сегодня and ou.title like 'Отдел') GROUP BY e.title ORDER BY e.title ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2021, 14:19 |
|
Селект задваиает столбцы
|
|||
---|---|---|---|
#18+
Александр Кузьминов Добрый день! Подскажите, нужно получить количество выполненных и назначенных запросов, но при выводе получаем два одинаковых столбца с количеством выполненных запросов, подозреваю что где-то спряталась логическая ошибка (у селектов немного разное условие и присоединение к таблице tbl_employee производится различными ключами), но не пойму где Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
считай агрегаты ДО джойнов. В CTE или в подзапросе (derived table) а потом доджойнивай всё что нужно пс подзапрос для sc1.id in (... - жуткая жуть ! ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2021, 14:30 |
|
Селект задваиает столбцы
|
|||
---|---|---|---|
#18+
court, не совсем понял ответ, при использовании CTE столбец Назначено тиражируется на всех сотрудников общим значением with recursive serv (title, number_, id) AS ( select e.title, ts.number_, ts.id as num from tbl_servicecall ts left join tbl_employee e on e.id=ts.solvedbyemployee_id left join tbl_ou ou on ou.id=e.parent_id left join tbl_employee e1 on e1.id=ts.resp2line_em where ts.datedecision between current_date and current_date+1 -- выполнено за сегодня and ou.title like 'Отдел ИТ-поддержки пользователей' Group BY e.title, ts.id union all select e.title, ts1.number_, serv.id+1 from tbl_servicecall ts join serv on ts.number_ = serv.id left join tbl_employee e on e.id=ts.solvedbyemployee_id left join tbl_ou ou on ou.id=e.parent_id left join tbl_employee e1 on e1.id=ts.resp2line_em join tbl_servicecall ts1 on ts.id = ts1.id -- left join tbl_log tl on tl.story$request=ts1.id join tbl_employee e2 on e2.id=tl.story$currentresp_em where ou.title like 'Отдел ИТ-поддержки пользователей' and tl.story$currstatecode='firstLine' and tl.story$prevstatecode='waitfirstLine' and ts1.creation_date between current_date and current_date+1 ) select distinct serv.title as "ФИО", count (distinct serv.id) as "Выполненно", (select count(serv.number_) from serv) as "Назначено" from serv group by serv.title ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2021, 16:45 |
|
Селект задваиает столбцы
|
|||
---|---|---|---|
#18+
Александр Кузьминов, Ну так берете убираете из запроса всю дополнительную муть и на минимальном примере смотрите что у вас в результатах промежуточных. Там сразу все становится понятно обычно. -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2021, 17:07 |
|
Селект задваиает столбцы
|
|||
---|---|---|---|
#18+
Александр Кузьминов столбец Назначено тиражируется на всех сотрудников общим значением нуу ещё бы ! Александр Кузьминов Код: sql 1. 2. 3. 4. 5. 6.
а что это (выделил) должно возвращать ? и при чём здесь рекурсия ... ? вообщем, начни с "простого" 1 https://www.sql.ru/faq/faq_topic.aspx?fid=202 2 пример данных, - результат на этих данных ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2021, 17:10 |
|
|
start [/forum/topic.php?fid=53&msg=40074710&tid=1994008]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
29ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 133ms |
0 / 0 |