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"
संपादित करें
...इसे yr lat/long कैल्क के आधार के रूप में उपयोग करने के लिए, आप या तो एक अस्थायी तालिका बना सकते हैं, या नीचे दिए गए (सरलीकृत DISTANCE कैल्क) जैसी क्वेरी के साथ इनलाइन परिणामों का उपयोग कर सकते हैं
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
नायब। हो सकता है कि आप परिणामों पर 'महंगी' अक्षांश/लंबी गणना करने से पहले, या एक अस्थायी तालिका में संग्रहीत करने से पहले अपने अक्षांश/लंबे परिणामों के लिए एक मोटा फ़िल्टर लागू करना चाहें। विचार यह होगा कि 10 मील के दायरे के बाहर सभी r1 परिणामों को स्पष्ट रूप से अनदेखा कर दिया जाए।
यदि आप एक अस्थायी तालिका का उपयोग करते हैं तो यह उपयोगकर्ता सत्र विशिष्ट होगी।
2 संपादित करें
आकृति का आकार पर एक नज़र डालें विवरण के लिए, लेकिन अनिवार्य रूप से 7 मिनट अक्षांश और देशांतर हमेशा 10 मील से अधिक होता है, इसलिए यदि आपका अक्षांश और देशांतर डिग्री में दर्ज किया गया है तो यह 0.117 पर्याप्त के करीब है। आपके लक्ष्य से 0.117 से अधिक भिन्न कोई भी बिंदु आपके 10 मील के दायरे में नहीं हो सकता। इसका मतलब है कि आप r1 तालिका को फ़िल्टर कर सकते हैं जैसे:
(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
नायब। यदि आपका डेटा ग्रीनविच मेरिडियन, अंतर्राष्ट्रीय तिथि रेखा या भूमध्य रेखा तक फैला है, तो यह सख्ती से सही नहीं होगा। मान लें कि आपके सभी अक्षांश/अक्षांश उत्तरी अमेरिका के लिए हैं तो कोई समस्या नहीं होगी।