[英]Combine multiple sql queries into a single sql query in postgresql
我的主页有 3 个不同的 PostgreSQL 查询getUsers
、 getCompanies
、 getEvents
。 我想为此创建一个查询。
我的 3 个简化查询:
getUsers = SELECT * FROM users;
getCompanies = SELECT * FROM companies;
getEvents = SELECT * FROM events;
我想通过此查询获取一组对象。 到目前为止我尝试了什么:
SELECT
coalesce(json_agg(users), '[]'::json) as users,
coalesce(json_agg(companies), '[]'::json) as companies,
coalesce(json_agg(events), '[]'::json) as events
FROM
(
SELECT
*
FROM
users
) AS users,
(
SELECT
*
FROM
companies
) AS companies,
(
SELECT
*
FROM
events
) AS events;
对于单个查询,这工作正常:
SELECT
coalesce(json_agg(companies), '[]'::json) as companies
FROM
(SELECT
*
FROM
companies
) as companies
Output 用于此单个查询:
companies [
{
name: 'test company',
url: 'https://www.example.com/test-company',
},
{
name: 'test agency',
url: 'https://www.example.com/test-agency',
}
]
结果应该是:
users: [{...},{...}],
companies: [{...},{...}],
events: [{...},{...}]
尝试这个:
SELECT
coalesce(json_agg(companies), '[]'::json) as companies
FROM
(SELECT
*
FROM
companies
) as companies
UNION
SELECT
coalesce(json_agg(users), '[]'::json) as users
FROM
(
SELECT
*
FROM
users
) AS users
UNION
SELECT
coalesce(json_agg(events), '[]'::json) as events
FROM
(
SELECT
*
FROM
events
) AS eventsl
经过一番努力后我的解决方案。 感谢 nikhil sugandh 让我走上了正确的道路!
SELECT
(jsonb_agg(companies)) as result
FROM
(SELECT
*
FROM
companies
) as companies
UNION
SELECT
(jsonb_agg(users)) as users
FROM
(
SELECT
*
FROM
users
) AS users
UNION
SELECT
(jsonb_agg(events)) as events
FROM
(
SELECT
*
FROM
events
) AS events
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.