select t1.post_id, t1.meta_value as lat, t2.meta_value as lon
from metatdatatable t1, metadatatable t2
where t1.meta_key = "_wp_field1"
and t2.post_id = t1.post_id
and t2.meta_key = "_wp_field2"
Sunting
...untuk menggunakan ini sebagai dasar untuk kal lat/long tahun, Anda dapat membuat tabel temp, atau menggunakan hasil sebaris dengan kueri yang mirip dengan (kalkulasi DISTANCE yang disederhanakan) di bawah
select d1.post_id, d1.distance
from
(select r1.post_id, ABS($lat - r1.lat) + ABS($lon - r1.lon) as DISTANCE
from (select t1.post_id, t1.meta_value as lat, t2.meta_value as lon
from metatdatatable t1, metadatatable t2
where t1.meta_key = "_wp_field1"
and t2.post_id = t1.post_id
and t2.meta_key = "_wp_field2") as r1
) as d1
where d1.distance <= 10
order by d1.distance ASC
catatan Anda mungkin ingin menerapkan filter kasar pada hasil bujur/bujur Anda sebelum melakukan perhitungan bujur/bujur 'mahal' pada hasil, atau sebelum menyimpan dalam tabel sementara. Idenya adalah mengabaikan semua hasil r1 dengan jelas di luar radius 10 mil.
Jika Anda menggunakan tabel temp, itu akan menjadi sesi khusus pengguna.
Edit 2
Lihat Bentuk Bumi untuk detailnya, tetapi pada dasarnya 7 menit lintang &bujur selalu lebih besar dari 10 mil, jadi jika lintang &bujur Anda dicatat dalam derajat, ini adalah 0,117 cukup dekat. Setiap poin yang berbeda lebih dari 0,117 dari target Anda tidak dapat berada di dalam radius 10 mil Anda. Ini berarti Anda dapat memfilter tabel r1 seperti :
(select t1.post_id, t1.meta_value as lat, t2.meta_value as lon
from metatdatatable t1, metadatatable t2
where t1.meta_key = "_wp_field1"
and t2.post_id = t1.post_id
and t2.meta_key = "_wp_field2"
and ABS(t2.meta_value - $lon) < 0.117
and ABS(t1.meta_value - $lat) < 0.117
) as r1
catatan Jika data Anda mencakup Greenwich Meridian, International Date Line, atau Khatulistiwa, ini tidak sepenuhnya benar. Dengan asumsi semua lat/bujur Anda untuk Amerika Utara, itu tidak akan menjadi masalah.