के बीच माप माप मुझे SQL कथन के माध्यम से उपयोगकर्ता को निकटतम स्थान वापस करने का प्रयास करने में समस्याएं आ रही हैं।दो लेट/एलएनजी अंक
एसक्यूएल:
SELECT `companies`.`customerName` ,
(3959 *
ACOS(
COS(
RADIANS(37.367485) * COS(RADIANS(`locations`.`gps_lat`)) *
COS(
RADIANS(`locations`.`gps_lng`) - RADIANS(-77.399994) +
SIN(RADIANS(37.367485)) * SIN(RADIANS(`locations`.`gps_lat`))
)
)
)
)
AS `distance`
FROM `locations`
JOIN `companies` ON `locations`.`co_id`
HAVING `distance` > 25
ORDER BY distance
LIMIT 0 , 10
परिणाम:
| customerName | distance |
| SOME COMPANY | 1914.41747964854 |
locations
तालिका मूल्यों का परीक्षण करने के लिए मैं ठीक उसी निर्देशांक उपयोग कर रहा हूँ, यहाँ मैं क्या है :
gps_lat | gps_lng
37.367485 | -77.399994
मैं Google से उदाहरण का इस्तेमाल किया, मैं सूत्र दो बार की जाँच की और मैं जहाँ मैं गलत हो गया था साथ आने के लिए नहीं कर पा रहे। किसी भी मदद की सराहना की है।
संपादित करें:
के बाद से यह जानकर मैं क्या कर रहा हूँ मुझ पर कुछ भ्रम की स्थिति होने के लिए वहाँ लगता है:
>
एक परिणाम उपज के लिए प्रतिस्थापित किया गया, 1914
स्पष्ट रूप से अधिक से अधिक तो 25
है।
इसका आवेदन एंड्रॉइड ऐप से हमारे वेब सर्वर पर उपयोगकर्ता निर्देशांक पास कर रहा है। अक्षांश और देशांतर $_GET
मूल्यों से खींचा जाएगा और हमारे वेब सर्वर MYSQL डेटाबेस में कंपनियों से क्रॉस-रेफरेंस किया जाएगा।
उपरोक्त वाक्यविन्यास सिर्फ मैक्सल वर्कबेंच में मेरा SQL कथन जांच रहा है। जाहिर है, मैं शून्य मान परिणाम की तलाश में हूं।
आप निकटतम चाहते हैं, यही कारण है कि आप इसे करने के प्रतिबंधित करने के लिए "दूरी > 25 "? –
मैंने किया, शून्य परिणाम लौटा। ध्यान दें कि यह मुझे – jnthnjns
से ऊपर की दूरी पर ध्यान दें, आप जिस आरडीबीएमएस का उपयोग कर रहे हैं उसके आधार पर, ऐसा करने के लिए काफी सरल (और तेज़) तरीके हो सकते हैं। पूर्व: [MySQL] (http://dev.mysql.com/doc/refman/5.0/en/spatial-extensions.html), [SQL सर्वर] (http://msdn.microsoft.com/en-us/ पुस्तकालय/बीबी 3 9 3876% 28v = sql.105% 29.aspx), [पोस्टग्रेएसक्यूएल] (http://postgis.refractions.net/)। –