我正在使用postgresql和postgis插件。
我已经按照此方案存储了数据:
如果我进行此请求:
我想要一个查询,其中属性返回table_id,列的列表,其中列名为值的键,其值和几何图形。例如,如果属性具有名称和密度,则返回如下响应:
到目前为止,我最接近实现它的方法是使用以下查询:
编辑:
首先,我已将一个字段存储为jsonb在我的postgressql数据库中,因此我想将该jsonb提取到列中。但是已将包含不同属性的不同表存储在jsonb列中。
所以,我的想法是获得一个查询,其中选择table_id、属性(在多个列中提取)和geom。
1 - 通过这个,我可以获得键的名称:
3 - 返回一个查询,在我调用它时,返回nametable中的table_id、从jsonb中提取的属性列和geom;
我的问题是我不知道如何使用子查询生成该查询。
我已经按照此方案存储了数据:
table_id是主键,属性为jsonb,geom为geometry(GeometryZ,4326)
;如果我进行此请求:
select table_id, properties, geom from nametable
,则会返回所有信息,其中table_id为整数,properties为jsonb,geom为geometry(GeometryZ,4326)。我想要一个查询,其中属性返回table_id,列的列表,其中列名为值的键,其值和几何图形。例如,如果属性具有名称和密度,则返回如下响应:
table_id | name | density | geom |
,但我不知道属性的名称,因此我认为应该在该查询内部进行查询以获取键的名称。到目前为止,我最接近实现它的方法是使用以下查询:
select jsonb_object_keys(properties) as key from nametable;
谢谢编辑:
首先,我已将一个字段存储为jsonb在我的postgressql数据库中,因此我想将该jsonb提取到列中。但是已将包含不同属性的不同表存储在jsonb列中。
所以,我的想法是获得一个查询,其中选择table_id、属性(在多个列中提取)和geom。
1 - 通过这个,我可以获得键的名称:
select jsonb_object_keys(properties) as key from nametable group by key;
2 - 使用键在列中获取每个键的所有值。3 - 返回一个查询,在我调用它时,返回nametable中的table_id、从jsonb中提取的属性列和geom;
我的问题是我不知道如何使用子查询生成该查询。