powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Вывод разных значений
3 сообщений из 3, страница 1 из 1
Вывод разных значений
    #40103518
Garlendik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ребят, нужна помощь, не силён в PostgreSQL, код достался от коллеги, который уволился, необходимо вывести точное количество записей, при таком выводе идёт 700 записей, при этом если выводить только couted_null, то их 740, а если выводить couted_full, то 755 значений, как их грамотно объединить, что бы вывелось всё?

select distinct p.name, null_val.couted_null, full_val.couted_full, d.code
from sec_user p, df_employee e, df_department d,

(Select p.id, count(p.name) as couted_null from sec_user p left join wf_assignment a on a.user_id = p.id
where a.finished is null group by p.id order by p.id) null_val,

(Select p.id, count(p.name) as couted_full from sec_user p left join wf_assignment a on a.user_id = p.id
where a.finished is not null group by p.id order by p.id) full_val

where null_val.id = p.id and full_val.id = p.id
and e.department_id = d.correspondent_id and p.id = e.user_id and p.active = 't'
...
Рейтинг: 0 / 0
Вывод разных значений
    #40103633
Garlendik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Суть в том, что вывожу у сотрудников 2 столбца, действующие задачи и завершённые за всё время и получается, что если действующих задач у сотрудника нет, то и сотрудник не выводится, а как сделать так, что если нет действующих задач, то просто прочерк идёт в действующих задачах и количество в в завершенных?
...
Рейтинг: 0 / 0
Вывод разных значений
    #40104221
maxkar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Garlendik,

Нужно исходный код на outer join переписать между двумя подзапросами. Или все переписать в агрегаты и outer join:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SELECT 
  p.name, 
  COUNT(1) FILTER WHERE (a.finished IS NULL) as couted_null,
  COUNT(1) FILTER WHERE (a.finished IS NOT NULL) as couted_full,
  d.code
FROM  sec_user p
  JOIN df_employee e ON p.id = e.user_id
  JOIN df_department d ON e.department_id = d.correspondent_id
  LEFT OUTER JOIN wf_assignment a ON a.user_id = p.id
WHERE p.active = 't'
GROUP BY p.id



В group by добавить условия по необходимости (зависит от того, как объявлены связи между другими таблицами). Можно и distinct, но мне кажется, что это из-за неправильных связей, наличие правильного списка в group by должно хватить.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Вывод разных значений
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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