我使用的是postgresql版本9.6。我正在尝试从我的数据库中创建一个JSON文件。我可以担心如何将SQL查询转换为文件,但我正在忙于如何设置查询。下面是我的表格和一些插入:
create table careers
(
career_id integer PRIMARY KEY,
career_name text
);
create table career_types
(
career_type_id integer PRIMARY KEY,
career_id integer REFERENCES careers,
career_type_name text
);
create table career_type_properties
(
career_type_property_id serial PRIMARY KEY,
career_id integer REFERENCES careers,
career_type_id integer REFERENCES career_types,
property_name character varying(255),
property_value character varying(255)
);
INSERT INTO careers (career_id, career_name)
VALUES
(1, 'medical'),
(2, 'hospitality'),
(3, 'education');
INSERT INTO career_types(career_type_id, career_id, career_type_name)
VALUES
(1, '1', 'surgeon'),
(2, '1', 'nurse'),
(3, '2', 'hotel_manager'),
(4, '2', 'bartendar'),
(5, '3', 'Middle_school_teacher'),
(6, '3', 'Professor');
INSERT INTO career_type_properties(career_id, career_type_id, property_name, property_value)
VALUES
('1', '1', 'pay', 'salary'),
('1', '1', 'days_per_week', '5'),
('1', '1', 'on_call', 'yes'),
('1', '1', 'doctorate_degree', 'yes'),
('1', '2', 'pay', 'salary'),
('1', '2', 'days_per_week', '4'),
('1', '2', 'on_call', 'no'),
('1', '2', 'doctorate_degree', 'no'),
('2', '3', 'pay', 'salary'),
('2', '3', 'days_per_week', '5-6'),
('2', '3', 'on_call', 'no'),
('2', '4', 'pay', 'hourly'),
('2', '4', 'days_per_week', '3-6'),
('2', '4', 'on_call', 'no'),
('3', '5', 'pay', 'salary'),
('3', '5', 'year_round', 'yes'),
('3', '5', 'does_research', 'no'),
('3', '5', 'set_hours', 'yes'),
('3', '6', 'pay', 'salary'),
('3', '6', 'year_round', 'optional'),
('3', '6', 'does_research', 'yes'),
('3', '6', 'set_hours', 'no');下面是我正在尝试生成的JSON的一个示例。
{
"medical":{
"surgeon":{
"pay": "salary",
"days_per_week": "5",
"on_call": "yes",
"doctorate_degree": "yes"
},
"nurse": {
"pay": "salary",
"days_per_week": "4",
"on_call": "no",
"doctorate_degree": "no"
}
},
"hospitality": {
"hotel_manager":{
"pay": "salary",
"days_per_week": "5-6",
"on_call": "no"
},
"bartender": {
"pay": "hourly",
"days_per_week": "3-6",
"on_call": "no"
}
},
"education": {
"middle_school_teacher":{
"pay":"salary",
"year_round": "yes",
"does_research": "no",
"set_hours": "yes"
},
"professor":{
"pay":"salary",
"year_round": "optional",
"does_research": "yes",
"set_hours": "no"
}
}
}我已经能够使用如下查询来接近:
select json_object_agg(property_name, property_value) from
career_type_properties group by career_type_id我对SQL的使用非常陌生,所以如果有任何帮助,我将不胜感激。
https://stackoverflow.com/questions/44449144
复制相似问题