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

डेटाबेस से मार्कर के दायरे में आने वाले परिणाम प्राप्त करें

इसे हल करने के लिए आपको वृत्त के समीकरण को समझने की आवश्यकता है, जो कुछ इस प्रकार है किसी भी बिंदु (x, y) के लिए केंद्र (x1, y1) और त्रिज्या r इकाई वाले वृत्त के भीतर आने के लिए है

(x-x1)^2 + (y - y1)^2 <= r^2

where a^b = a to the power b

यहां आपके मामले में उपयोगकर्ता बी (अक्षांश, देशांतर) सर्कल के केंद्र हैं, उपयोगकर्ता ए (अक्षांश, देशांतर) बिंदु (x, y) और त्रिज्या =2 किमी हैं।

लेकिन मूल समस्या अक्षांश की डिग्री को देशांतर में बदलने की है, इसलिए यहां समाधान है, 1 डिग्री =111.12 किमी। तो समीकरण के दोनों तरफ इकाइयों को समान रखने के लिए, हम इसे किलोमीटर में बदल देंगे

तो हमारा अंतिम समीकरण बन जाता है:

((x-x1)*111.12)^2 + ((y-y1)*111.12)^2 = 4      (=2^2) 

इसके लिए SQL स्टेटमेंट कुछ इस तरह दिखना चाहिए

SELECT A.user_id, A.radius_id, A.latitude, A.logitude
FROM UserA AS A, 
     (SELECT user_id, latitude, longitude 
       FROM UserB 
       WHERE user_id = 8) AS B
WHERE (POW((A.latitude-B.latitude)*111.12, 2) + POW((A.longitude - B.longitude)*111.12, 2)) <= 4
/* **Edit** Here I have used (A.longitude - B.longitude)*111.12, for more accurate results one can replace it with (A.longitude - B.longitude)*111.12*cos(A.latitude)) or (A.longitude - B.longitude)*111.12*cos(B.latitude)) 

And, as i have suggested in the comments that first filter some records based on approximation, so whether one uses A.latitude or B.latitude it will not make much difference */

आशा है कि यह मदद करेगा...



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एसक्यूएल दो टेबल से तीन प्रश्नों को एक क्वेरी में कैसे संयोजित करें

  2. MYSQL एकाधिक पंक्तियों के आधार पर तालिकाओं से चयन करें

  3. सनस्पॉट सोलर अपरिभाषित फ़ील्ड प्रकार

  4. वर्डप्रेस कैसे स्थापित करें:सर्वर सॉफ्टवेयर

  5. मैं MySQL को अस्थायी रूप से कमांड लाइन के माध्यम से केवल-पढ़ने के लिए कैसे सेट करूं?