Postgresql 在Postgis中,如何从空间表和相关(非空间)表之间的一对多关系构建Geojson

Postgresql 在Postgis中,如何从空间表和相关(非空间)表之间的一对多关系构建Geojson,postgresql,postgis,Postgresql,Postgis,我有一个医院(点)的空间表,它与一个(非空间)配价表(急症、急症等)有一对多的关系 医院(id、姓名、geom); 配价(id、名称、配价) “名称”是公共字段 如何在此基础上在PostgreSQL/Postgis中构建有效的Geojson,其中每个医院(点)可以有一个或多个价 我已经尝试过这个查询的一些变体,但总是给出相同的错误“一个用作表达式的子查询返回多行” 非常感谢 通过此查询,“配价”列表作为json数组返回到propertyproperties.valences SELECT j

我有一个医院(点)的空间表,它与一个(非空间)配价表(急症、急症等)有一对多的关系

医院(id、姓名、geom); 配价(id、名称、配价)

“名称”是公共字段

如何在此基础上在PostgreSQL/Postgis中构建有效的Geojson,其中每个医院(点)可以有一个或多个价

我已经尝试过这个查询的一些变体,但总是给出相同的错误“一个用作表达式的子查询返回多行”


非常感谢

通过此查询,“配价”列表作为json数组返回到property
properties.valences

SELECT
  json_build_object(
    'type', 'FeatureCollection',
    'features', json_agg(
      json_build_object(
        'type', 'Feature',
        'geometry', ST_AsGeoJSON(h.geom)::json,
        'properties', json_build_object(
          'name', h.name,
          'valences', (
            -- Generate json array of "valences":
            SELECT array_to_json(array_agg(v.valence)) 
            FROM valence v 
            WHERE v.name = h.name 
            GROUP BY v.name
          )
        )
      ) 
    )
  ) json
FROM
  hospital h
返回的GeoJSON对象根据

SELECT
  json_build_object(
    'type', 'FeatureCollection',
    'features', json_agg(
      json_build_object(
        'type', 'Feature',
        'geometry', ST_AsGeoJSON(h.geom)::json,
        'properties', json_build_object(
          'name', h.name,
          'valences', (
            -- Generate json array of "valences":
            SELECT array_to_json(array_agg(v.valence)) 
            FROM valence v 
            WHERE v.name = h.name 
            GROUP BY v.name
          )
        )
      ) 
    )
  ) json
FROM
  hospital h