에서 에 맞,나를 작성하는 쿼리 사이의 거리를 계산합 시작과 끝 날짜를 위한 각각의 ID 입니다. 나에 관심 지점 사이에 날짜 범위입니다. 나만을 잡기 위해 필요 lat/길의 시작과 끝 날짜를 계산한 유클리드리합니다.
테이블 1 다음과 같습니다:
ID startdate enddate
A 2016-9-16 2016-10-9
A 2017-3-18 2017-4-9
테이블의 2 좌표는 다음과 같습니다:
ID Date Latitude Longitude
A 2016-9-16 40.76 -109.33
A 2016-9-17 40.72 -109.33
A 2016-10-9 40.75 -109.33
A 2017-3-18 40.81 -109.33
A 2017-4-8 40.83 -109.33
A 2017-4-9 40.96 -109.32
내가 원하는 결과 같을 것이다:
ID t1.startdate t2.Latitude t2.Longitude t1.enddate t2.Latitude t2.Longitude distance
A 2017-3-18 40.81 -109.33 2017-4-9 40.96 -109.32 150
A 2016-9-16 40.76 -109.33 2016-10-9 40.75 -109.33 200
이것이 가까이 했는데 그러나 때문에 여러 개 있을 수 있습 ID,그것의 일치하지 않는 올바른 시작과 끝 날짜를 각 ID:
SELECT
t1,t2,
ST_DISTANCE(Point1, Point2 ) as distance
from (
SELECT
ID,
st_geogpoint(Longitude,Latitude) as Point1
from `t2` AS t2 INNER JOIN
`t1` AS t1 ON t1.ID = t2.ID
WHERE t1.ID = t2.ID AND
t2.Date = t1.startdate ) t1,
(
SELECT
ID,
st_geogpoint(Longitude, Latitude) as Point2
from `t2` AS t2 INNER JOIN
`t1` AS t1 ON t1.ID = t2.ID
WHERE t1.ID = t2.ID AND
t2.Date = t1.enddate
) t2
WHERE t1.ID = t2.ID
현재 결과는 다음과 같다:
ID t1.startdate t2.Latitude t2.Longitude t1.enddate t2.Latitude t2.Longitude distance
A 2016-9-16 40.76 -109.33 2016-10-9 40.75 -109.33 150
A 2016-9-16 40.76 -109.33 2017-4-9 40.96 -109.32 250
A 2017-3-18 40.81 -109.33 2017-4-9 40.96 -109.32 200
A 2017-3-18 40.81 -109.33 2016-10-9 40.75 -109.33 250