sql - SQL 查询以 JSON 格式为 SQLite 返回嵌套的对象数组
问题描述
我无法弄清楚这一点,我在 SQLite db 和 nodejs 中有 2 个简单的表,表达 api 端点应该由学生获得结果,并将主题作为对象的嵌套数组。表:Student(id, name) 和 Subject(id, name, studentId)
谁能帮我弄清楚这个查询?
这就是我需要的结果:
{
"id": 1,
"name": "Student name",
"subjects":
[{
"id": 1,
"name": "Subject 1"
},
{
"id": 2,
"name": "Subject 2"
}]
}
解决方案
如果您的 sqlite 版本是在支持JSON1扩展的情况下构建的,则很容易从查询本身生成 JSON:
SELECT json_object('id', id, 'name', name
, 'subjects'
, (SELECT json_group_array(json_object('id', subj.id, 'name', subj.name))
FROM subject AS subj
WHERE subj.studentid = stu.id)) AS record
FROM student AS stu
WHERE id = 1;
record
---------------------------------------------------------------------------------------------------
{"id":1,"name":"Student Name","subjects":[{"id":1,"name":"Subject 1"},{"id":2,"name":"Subject 2"}]}
推荐阅读
- java - MySQL DB 上的 SimpleJdbcInsert 在 executeAndReturnKey 方法后返回 BigInteger 而不是 Long
- flutter - 在初始化程序错误中只能访问静态成员
- android - Android 改造 - 获取 Json 数组
- jenkins - Jenkins 声明式管道获取构建失败原因
- java - c:forEach 不在 JSP 中打印地图内容
- heroku - 通过外部应用程序连接到 Heroku Postgres
- arrays - 替换 ASCII 文件中的编号
- python - 映射pandas中的列数据时如何创建多个列
- vaticle-typedb - 删除具有相同属性值的重复实体
- caching - Varnish:禁止带有任何 GET 参数的 URL