इसे हल करने के लिए आपको वृत्त के समीकरण को समझने की आवश्यकता है, जो कुछ इस प्रकार है किसी भी बिंदु (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 */
आशा है कि यह मदद करेगा...