sql - SQL 查询。加入右表作为左表内的嵌套对象
问题描述
通读文档后,我找不到任何关于如何进行这个简单查询的信息:有两个表:
first one is "PACKAGES"
{
id: 1,
name: 'package_1',
sender_id: 1,
type: 'shipping'
}
second one is "USERS"
{
id: 1,
name: 'user_1'
}
当我执行左、右连接或简单连接时,它只是将这两个表合并为一个。而 id, name 只是相互覆盖
我需要的是:
{
id: 1,
name: 'package_1',
sender_id: 1
type: 'shipping',
user: { // second table as nested object
id: 1,
name: 'user_1'
}
}
我尝试了所有我能找到的东西,例如:
SELECT * FROM packages JOIN users AS user ON packages.sender_id=user.id;"
如何将右表作为左表内的对象?
解决方案
用于to_json
将查询结果呈现为嵌套的 JSON 对象:
select to_json(res) from
(
select p.*, to_json(u) "user"
from packages p
inner join users u
on p.sender_id = u.id
) res;
结果:
{
"id": 1,
"name": "package_1",
"sender_id": 1,
"type": "shipping",
"user": {
"id": 1,
"name": "user_1"
}
}
推荐阅读
- r - 从一副牌中抽牌直到你得到一对
- sql - 如何打印常量的数据类型
- python - Marshmallow JSONAPI:模式序列化和反序列化不是对称的?
- python - 根据不同列表的值复制列表中的项目
- unity3d - 在 Unity 5.6.7 版中,我怎样才能拥有瓷砖地图?
- c++ - 使用 std::shared_ptr 的代码相当于什么
- ios - Swiftui 中的透明材质
- swift - 如何设置以编程方式放入 StackView 的按钮的高度值?
- google-sheets - 查找单元格中字符最后出现的位置
- python - 使用python selenium webdriver wait-until的多个条件