テーブル 2 の center_geom とテーブル 3 の home_location の間の距離を見つけて、テーブル 1 の列「距離」の値を更新します。
表1
obu_id end_location trip_id end_loc_adj distance
1 51 1234
2 57 1357 44
2 63 1351
3 21 1212 20
3 23 4313
表 2
id obu_id center_geom
int int geom
51 2 "0101000020ED0800006DFFCAA2A2553341B20E4717774E0C41"
52 3 "0101000020ED080000AE47E17A35F73341FE65F764723C0841"
57 3 "0101000020ED0800006DFFCAA2A2553341B20E4717774E0C41"
21 4 "0101000020ED080000B81E852BC555334186048C9EB1C21141"
- ここで、表 1 を参照してください: end_loc_adj に値がある場合、列: end_loc_adj を end_loc ではなく使用する必要があります ヒント: if-else を使用します。
- テーブル 1 の列名「end_loc」は、テーブル 2 の列「id」と同じ値を持ちます。
表 3
hhid obu_id home_location
(character Int geometry
varying)
11 1 "0101000020ED08000082E2C7A0B2413341BC5818A21F000941"
15 2 "0101000020ED080000B81E852BC555334186048C9EB1C21141"
17 3 "0101000020ED0800006DFFCAA2A2553341B20E4717774E0C41"
17 4 "0101000020ED080000B81E852BC555334186048C9EB1C21141"
22 7 "0101000020ED080000AE47E17A35F73341FE65F764723C0841"
私は次のことを試しました:
select ST_Distance_Sphere ( ST_AsText(cast(v.house_location AS text)) , ST_AsText(cast(l.center AS text)))
public.locations l、clean.vehicles v から l.obu_id=v.obu_id および l.obu_id=3
ただし、これは単一のobu_idに対して手動で機能します
関数を使って一気に完成させたい。これを行う方法についてアイデアを教えてください。
ありがとう。