Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

mysql अपने आप में तालिका में शामिल हों

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  

नायब। यदि आपका डेटा ग्रीनविच मेरिडियन, अंतर्राष्ट्रीय तिथि रेखा या भूमध्य रेखा तक फैला है, तो यह सख्ती से सही नहीं होगा। मान लें कि आपके सभी अक्षांश/अक्षांश उत्तरी अमेरिका के लिए हैं तो कोई समस्या नहीं होगी।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Django व्यवस्थापक सूची प्रदर्शन + विदेशीकी =खाली परिवर्तन सूची

  2. opencart - टेम्पलेट फ़ाइल के अंदर मॉड्यूल को मैन्युअल रूप से कैसे प्रदर्शित करें?

  3. MySQL:यदि परिभाषित पंक्तियाँ समान हों तो नई पंक्ति न डालें

  4. mysql शो टाइम स्लॉट उपलब्ध हैं और टाइम स्लॉट टेबल से व्यस्त हैं

  5. Mysql - सभी टेबल और कॉलम को लोअर केस में बदलें?