Jav*_*ier 5 sql postgresql postgis
我正在使用 postgresql 和 postgis 插件。
我已经用这个方案存储了数据:table_id is primary key, properties is a jsonb and geom as geometry(GeometryZ,4326);
如果我提出此请求:select table_id, properties, geom from nametable返回所有信息,其中 table_id 作为整数,属性作为 jsonb,geom 作为几何(GeometryZ,4326)。
我想要一个查询,其中属性返回 table_id,列的列表,其中列的名称是值的键及其值和几何。例如,如果属性具有名称和密度,则返回如下响应:table_id | name | density | geom |,但我不知道属性的名称,因此我认为这应该是该查询中获取键名称的查询。
我最接近得到它的是这个查询:select jsonb_object_keys(properties) as key from nametable;
谢谢
编辑:
首先,我在 postgressql 数据库中存储了一个字段作为 jsonb,所以我想将该 jsonb 提取到列中。但已将包含不同属性的不同表存储到 jsonb 列中。
因此,我们的想法是获取一个查询,其中选择 table_id、属性(在多列中提取)和 geom。
1 - 有了这个我就有了键的名称:select jsonb_object_keys(properties) as key from nametable group by key;
2 - 通过键将每个键的所有值放入列中。
3 - 返回一个查询,当我调用它时,返回 table_id、从 jsonb 中提取的属性列、从 nametable 中提取的 geom;
我的问题是我不知道如何使用子查询生成该查询。
您尝试过使用 吗CTE?
WITH j AS (
SELECT
table_id,
properties->>'name' AS name,
properties->>'density' AS density,
geom
FROM t)
SELECT * FROM j WHERE j.name = 'Alabama';
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1543 次 |
| 最近记录: |