2016-04-01 13 views
0

ben bir Postregs veritabanıyla aşağıdaki tablo yapıları:Postgres Çok tablo veri karşılaştırma yapınız

Tablo bölgeleri

id - int, PK 
name - varchar 

Tablo zone_boundaries

id - int, PK 
zone_id - FK (zones.id), 
boundary - polygon 

Tablo araçları

id - int, PK 
vehicle_registration - varchar 

Tablo

id - int, PK 
vehicle_id - int, FK (vehicles.id) 
latitude - float 
longitude - float 

bölge sınırları tabloda sınır kolon poligon olarak zone_id bağlantı ile belirtilen bölgenin enlem/boylam koordinatları tutar vehicle_logs.

Şimdi, lat/lng koordinatları zone_boundaries tablosundaki bir bölge sınırına düşen tüm araçların sayısını select deyiminde almak istiyorum. Bu sorguyu nasıl yazarım?

cevap

0

Bir tek geçiş yapmak zor olacaktır. Öncelikle, enlem ve boylamı dönüştürmeniz gerekecektir, örneğin:

Bundan sonra ST_Intersects kullanabilirsiniz. St_Intersects, iki geometrinin kesişip kesişmediğini döndürür. Alternatif olarak ST_CONTAINS kullanabilirsiniz.