2016-06-27 8 views
0

ich eine Abfrage, die wie folgt aussieht:Umgestalten SQL-Abfrage, die PostGIS-Funktionen verwendet

SELECT *, 
     ST_Distance(
      ST_GeographyFromText('SRID=4326;POINT(' || users.longitude || ' ' || users.latitude || ')'), 
      ST_GeographyFromText('SRID=4326;POINT(-84.334078 45.273343)')) as distance 
     FROM users 
     WHERE ST_DWithin(
      ST_GeographyFromText('SRID=4326;POINT(' || users.longitude || ' ' || users.latitude || ')'), 
      ST_GeographyFromText('SRID=4326;POINT(-84.334078 45.273343)'), 
      2000 
     ) 
     ORDER BY distance ASC;" 

habe ich hier ein paar Wiederholungen sehen. Ich frage mich, gibt es eine Möglichkeit, diese Abfrage lesbarer zu machen?

Antwort

1

Lateral beitreten:

select *, ST_Distance(a, b) distance 
from 
    users, 
    ST_GeographyFromText('SRID=4326;POINT(' || users.longitude || ' ' || users.latitude || ')') a, 
    ST_GeographyFromText('SRID=4326;POINT(-84.334078 45.273343)') b 
where ST_DWithin(a, b, 2000) 
order by distance asc; 
Verwandte Themen