Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 如何在postgis上使用子查询作为几何参数?_Postgresql_Subquery_Postgis - Fatal编程技术网

Postgresql 如何在postgis上使用子查询作为几何参数?

Postgresql 如何在postgis上使用子查询作为几何参数?,postgresql,subquery,postgis,Postgresql,Subquery,Postgis,我需要比较postgis上的一些空间数据,但我需要与另一个表卡历史中的非几何数据进行比较,该表卡包含使用ST_GeomFromText函数所需的lat和长字段。 但是我如何在一个查询中完成它呢? 因为我正在研究php witch不相关,所以进行大量查询将是非常痛苦的 我正在尝试这样的事情: SELECT ST_Distance_Sphere (ST_GeomFromText('POINT( (SELECT DISTINCT ON (userid) long from card_h

我需要比较postgis上的一些空间数据,但我需要与另一个表卡历史中的非几何数据进行比较,该表卡包含使用ST_GeomFromText函数所需的lat和长字段。 但是我如何在一个查询中完成它呢? 因为我正在研究php witch不相关,所以进行大量查询将是非常痛苦的

我正在尝试这样的事情:

SELECT ST_Distance_Sphere
  (ST_GeomFromText('POINT(
      (SELECT DISTINCT ON (userid) long from card_history) 
      (SELECT DISTINCT ON (userid) lat from card_history))',4326),
   ST_GeomFromText('POINT(17.0712215 48.15825)',4326)
  )
但子查询似乎不能作为POINT的参数。 请帮助

试试这个

WITH 
lon AS (
    SELECT DISTINCT ON (userid) AS long from card_history
), 

 lat AS (
     SELECT DISTINCT ON (userid) AS lat from card_history
)

SELECT ST_Distance_Sphere(ST_GeomFromText(

'POINT(' || lon.lon || ' ' || lat.lat || ',4326'),

ST_GeomFromText('POINT(17.0712215 48.15825)',4326))

FROM lon, lat;
试试这个

WITH 
lon AS (
    SELECT DISTINCT ON (userid) AS long from card_history
), 

 lat AS (
     SELECT DISTINCT ON (userid) AS lat from card_history
)

SELECT ST_Distance_Sphere(ST_GeomFromText(

'POINT(' || lon.lon || ' ' || lat.lat || ',4326'),

ST_GeomFromText('POINT(17.0712215 48.15825)',4326))

FROM lon, lat;
试试这个

WITH 
lon AS (
    SELECT DISTINCT ON (userid) AS long from card_history
), 

 lat AS (
     SELECT DISTINCT ON (userid) AS lat from card_history
)

SELECT ST_Distance_Sphere(ST_GeomFromText(

'POINT(' || lon.lon || ' ' || lat.lat || ',4326'),

ST_GeomFromText('POINT(17.0712215 48.15825)',4326))

FROM lon, lat;
试试这个

WITH 
lon AS (
    SELECT DISTINCT ON (userid) AS long from card_history
), 

 lat AS (
     SELECT DISTINCT ON (userid) AS lat from card_history
)

SELECT ST_Distance_Sphere(ST_GeomFromText(

'POINT(' || lon.lon || ' ' || lat.lat || ',4326'),

ST_GeomFromText('POINT(17.0712215 48.15825)',4326))

FROM lon, lat;

AS上或其旁边的Sintax错误,但如果我删除,将返回与以前相同的Sintax错误:错误:解析错误-无效几何体提示:POINT得到它,只需在此处发布查询,我就可以根据@zero323 answer找到它。使用lon作为用户ID上的SELECT DISTINCT long from card|U history,lat作为用户ID上的SELECT DISTINCT lat from card|U history选择ST|U SPARECEST|GEOMFROM TEXT'POINT'| lon.long|||lat.lat|,ST|GEOMFROM TEXT'POINT17.0712215 48.15825',lon,lat;它是@grouch-answer:lat/lon不应该有两个不同的选择,它应该是相同的选择,否则它将是AS上或AS旁边的外部joinstax错误,但是如果我删除,将返回与之前相同的sintax错误:错误:解析错误-无效几何体提示:POINT得到了它,只要在这里发布查询,我就可以根据@zero323-answer找到答案。使用lon作为用户ID上的SELECT DISTINCT long from card|U history,lat作为用户ID上的SELECT DISTINCT lat from card|U history选择ST|U SPARECEST|GEOMFROM TEXT'POINT'| lon.long|||lat.lat|,ST|GEOMFROM TEXT'POINT17.0712215 48.15825',lon,lat;它是@grouch-answer:lat/lon不应该有两个不同的选择,它应该是相同的选择,否则它将是AS上或AS旁边的外部joinstax错误,但是如果我删除,将返回与之前相同的sintax错误:错误:解析错误-无效几何体提示:POINT得到了它,只要在这里发布查询,我就可以根据@zero323-answer找到答案。使用lon作为用户ID上的SELECT DISTINCT long from card|U history,lat作为用户ID上的SELECT DISTINCT lat from card|U history选择ST|U SPARECEST|GEOMFROM TEXT'POINT'| lon.long|||lat.lat|,ST|GEOMFROM TEXT'POINT17.0712215 48.15825',lon,lat;它是@grouch-answer:lat/lon不应该有两个不同的选择,它应该是相同的选择,否则它将是AS上或AS旁边的外部joinstax错误,但是如果我删除,将返回与之前相同的sintax错误:错误:解析错误-无效几何体提示:POINT得到了它,只要在这里发布查询,我就可以根据@zero323-answer找到答案。使用lon作为用户ID上的SELECT DISTINCT long from card|U history,lat作为用户ID上的SELECT DISTINCT lat from card|U history选择ST|U SPARECEST|GEOMFROM TEXT'POINT'| lon.long|||lat.lat|,ST|GEOMFROM TEXT'POINT17.0712215 48.15825',lon,lat;这是@grouch回答:lat/lon不应该有两个不同的选择,它应该是相同的选择,否则它将是一个外部连接