我有一个Sqlite表triples
,它包含{ id, rel, tgt }
格式的三重信息[1]。我想创建一个视图,将这种三种格式的数据公开为"对象格式",以便从该数据库读取数据的应用程序更容易使用这种格式。理论上sqlite的JSON1扩展将允许我构造这样的对象,但我很挣扎。
当前查询
select distinct json_object(
'id', id,
rel, json_group_array(distinct tgt)
) as entity from content
group by src, rel, tgt
order by src, rel, tgt
不能正常工作。它生成像
这样的对象{ id: 'a', 'is': ['b'] }
{ id: 'a', 'is': ['c'] }
而不是
{ id: 'a', 'is': ['b', 'c'] }
它还生成重复的键,如
{ id: 'a', id: ['a'] }
编辑
更接近,但不能正确处理id。它构造一个数组,而不是字符串
create view if not exists entity as
select distinct json_group_object(
rel, json_array(distinct tgt)
) as entity from content
group by src
我想iif
可能会有帮助
问题;
你能帮我调整我的查询产生正确的输出(见下文)吗?如果有任何需要消除歧义或澄清的地方,请评论
期望输出值
输入:
<三格式/strong>:
id | rel | tgt
-----------------------
Bob | is | Bob
Bob | is | Person
Bob | age | 20
Bob | likes | cake
Bob | likes | chocolate
Alice | id | Alice
Alice | is | Person
Alice | hates | chocolate
输出:
对象格式[2]:
{
id: Bob,
is: [ Person ],
age: [ 20 ],
likes: [ cake, chocolate ]
}
{
id: Alice,
is: [ Person ],
hates: [ chocolate ]
}
详细信息[1]这个数据集具有不可预测的结构;我可以假设没有关于id
之外存在什么"真实"键的先验知识。每个src
参数都存在一个三重<src> id <src>
。
[2]对象应该具有以下格式。id
不能被覆盖。
{
id: <id>
<distinct rel>: [
< tgt >
]
}
相关信息- https://www.sqlite.org/json1.html
CREATE TABLE content (
id VARCHAR(32),
rel VARCHAR(32),
tgt VARCHAR(32)
);
INSERT INTO
content
VALUES
('Bob' , 'id' , 'Bob'),
('Bob' , 'is' , 'Person'),
('Bob' , 'age' , '20'),
('Bob' , 'likes', 'cake'),
('Bob' , 'likes', 'chocolate'),
('Alice', 'id' , 'Alice'),
('Alice', 'is' , 'Person'),
('Alice', 'hates', 'chocolate')
WITH
id_rel AS
(
SELECT
id,
rel,
JSON_GROUP_ARRAY(tgt) AS tgt
FROM
content
GROUP BY
id,
rel
)
SELECT
JSON_GROUP_OBJECT(
rel,
CASE WHEN rel='id'
THEN JSON(tgt)->0
ELSE JSON(tgt)
END
)
AS entity
FROM
id_rel
GROUP BY
id
ORDER BY
id
相关内容
- 类型错误:无法按照 FastAPI 的 AuthLib Google Auth 示例将"URL"对象转换为字节
- Pandas:将对象转换为str
- 如何动态忽略某些字段在javascript对象转换为json时?
- java中的REST API对象转换
- r语言 - 如何将令牌对象转换为语料库对象
- 将Firebase数据对象转换为数组
- 将Gsons的JsonNull对象转换为enum
- 将平面对象转换为单个属性对象的数组
- r语言 - 如何将日期/时间对象转换为小数?
- 将复杂对象转换为x-www-form-urlencoded
- 如何将api对象转换为json文件,如果该对象是javascript中的字符串?
- r语言 - 将对象转换为数据帧并恢复到原始状态
- C#正在将对象转换为字节数组
- PowerShell是否根据需要自动将管道对象转换为字符串?
- 如何将对象转换为集合?
- 如何将单个json对象转换为json数组?
- JavaScript将JavaScript对象转换为JSON对象
- Angular&Rxjs :如何将返回的可观察对象转换为 json
- 如何将数据类型从对象转换为数字,然后在熊猫中找到每一行的平均值?例如。转换 '<17,500, >=15,000' 为 16250(平均价值)
- 使用velocity模板将XML对象转换为Json
最新更新
- 我的prinln方法没有输出我想要的相同输出
- azure function poppler utils
- r语言 - 取对角矩阵的幂
- multiplication Table in dart
- 如何捕获从装饰器抛出"FilesInterceptor"错误
- 错误:fatal:不是git存储库(或任何父目录):.git云源存储库
- 创建一个Python字典,以开始值和结束值作为键
- 根据列唯一值对组执行多元线性回归
- 如何在VS Code中添加扩展的Git提交消息
- 是否有办法捕获HTTP响应中的错误(例如状态码500),然后在selenium中失败脚本?
- mysql恢复命令和授予特权
- 在r中使用lubridate make_datetime后的未知日期列类
- 如何从Firebase认证获得Twitter用户名- Javascript
- 在哪里存储凭证和其他机密的Apache Flink SQL?
- 包含具有相同外键的相关对象的查询集
- 为什么getter触发器有时在模板中?
- 使用ansible访问字典文件列表
- 奇怪的uint8_t转换与OpenCV
- C语言在介子中的覆盖报告
- 如何根据第二个表的条件从一个表中选择值?
- 为什么在下一个.js " use client "组件顶部给我这个错误?
- 正在文本文件中搜索字符串,但得到多个结果
- 如何在链表中使用复制赋值操作符
- CycloneDX v2.1.2 -如何使用CycloneDX v2.1.2为.net框架项目生成依赖关系图
- 如何对一般嵌套的TypedDict进行类型注释?
- Web代码只是不工作-文本不断弹出动画后
- 如何使用VBA根据电子邮件的主题提取Outlook电子邮件数据?
- 为什么 H2 不能创建此表?
- 按下按钮后功能并行或同时计算
- Gradle无法获取Unity Mediation、Firebase和Google Play Service的依赖项.&
热门标签:
javascript python java c# php android html jquery c++ css ios sql mysql arrays asp.net json python-3.x ruby-on-rails .net sql-server django objective-c excel regex ruby linux ajax iphone xml vba spring asp.net-mvc database wordpress string postgresql wpf windows xcode bash git oracle list vb.net multithreading eclipse algorithm macos powershell visual-studio image forms numpy scala function api selenium