SQLRU.net
Разработка приложений баз данных

Начало » Использование СУБД » PostgreSQL » Как правильно написать json запрос на PostgreeSQL
icon1.gif  Как правильно написать json запрос на PostgreeSQL [сообщение #6128] Tue, 24 June 2025 19:22 Переход к следующему сообщению
akakia в настоящее время не в онлайне  akakia
Сообщений: 3
Зарегистрирован: June 2025
Junior Member
Здравствуйте. Прошу вашей помощи. Подскажите мне, пожалуйста, как правильно мне оформить запрос, чтобы вернулся корректный json ?
Вот мой запрос:
	SELECT array(SELECT json_build_object(
			        'department_id', d.department_id, 
					'department_name', dep.name,
			        'employeesDetails', (array(select json_build_object('id', e.id,
						'fio', e.fio,
						'resources', (array(select json_build_object(
							'active_time', e.active_time,
							'idle_time', e.idle_time,
							'type_app', e.type_app,
							'name_app', e.name_app
						)
						FROM employee_productivity e
						WHERE e.department_id = d.department_id) )
						)										
						FROM employee_productivity e
						WHERE e.department_id = d.department_id))
					)


			    FROM public.departments_productivity d
				inner join central.organization_department dep on dep.id = d.department_id
			    where date >= '2025-06-01' and date <= '2025-06-30'
			)
после его выполнения я получаю некорректный json. Он весь экранирован кавычками, json валидаторы на него ругаются.
Вот что я получаю:
{"{\"department_id\" : \"bbe8601771c54b219d93a6b769078b37\", \"department_name\" : \"Тестирование\", \"employeesDetails\" : [{\"id\" : 2, \"fio\" : \"Charov Vlad\", \"resources\" : [{\"active_time\" : 1800, \"idle_time\" : 21000, \"type_app\" : \"PROGRAM\", \"name_app\" : \"Telegram\"}]}]}","{\"department_id\" : \"bbe8601771c54b219d93a6b769078b37\", \"department_name\" : \"Тестирование\", \"employeesDetails\" : [{\"id\" : 2, \"fio\" : \"Charov Vlad\", \"resources\" : [{\"active_time\" : 1800, \"idle_time\" : 21000, \"type_app\" : \"PROGRAM\", \"name_app\" : \"Telegram\"}]}]}","{\"department_id\" : \"bbe8601771c54b219d93a6b769078b37\", \"department_name\" : \"Тестирование\", \"employeesDetails\" : [{\"id\" : 2, \"fio\" : \"Charov Vlad\", \"resources\" : [{\"active_time\" : 1800, \"idle_time\" : 21000, \"type_app\" : \"PROGRAM\", \"name_app\" : \"Telegram\"}]}]}","{\"department_id\" : \"bbe8601771c54b219d93a6b769078b37\", \"department_name\" : \"Тестирование\", \"employeesDetails\" : [{\"id\" : 2, \"fio\" : \"Charov Vlad\", \"resources\" : [{\"active_time\" : 1800, \"idle_time\" : 21000, \"type_app\" : \"PROGRAM\", \"name_app\" : \"Telegram\"}]}]}"}
А мне нужно получить вот такую структуру:
"employeesProductivity": [
			{
				"departmentId": 24,
				"departmentName": "Дизайн",
				"employeesDetails": [
					"employeeId": 98,
					"employeeName": "Иван Петров",
					"resources": [
						{
							"type": "PROGRAM",
							"name": "Telegram",
							"category": "Work",
							"categoryId": 2,
							"grade": "PRODUCTIVE",
							"activeTime": "12:43",
							"idleTime": "0:58"
						}
					]
				]
			}
		]
как мне улучшить мой запрос ?

[Обновления: Tue, 24 June 2025 19:23]

Известить модератора

Re: Как правильно написать json запрос на PostgreeSQL [сообщение #6130 является ответом на сообщение #6128] Wed, 25 June 2025 21:37 Переход к предыдущему сообщениюПереход к следующему сообщению
BlackEric в настоящее время не в онлайне  BlackEric
Сообщений: 391
Зарегистрирован: June 2022
Senior Member
А в чем вы его выводите?
Re: Как правильно написать json запрос на PostgreeSQL [сообщение #6131 является ответом на сообщение #6130] Fri, 27 June 2025 19:18 Переход к предыдущему сообщению
akakia в настоящее время не в онлайне  akakia
Сообщений: 3
Зарегистрирован: June 2025
Junior Member
Добрый вечер. Этот вопрос решила)
Предыдущая тема: Сгруппировать в JSON данные
Следующая тема: поправить функцию
Переход к форуму:
  


Текущее время: Mon Jun 30 01:52:48 GMT+3 2025

Общее время, затраченное на создание страницы: 0.01030 секунд