मुझे ऐसा लगता है कि आप मान रहे हैं कि एक बार आपने z.id
. का चयन कर लिया है क्वेरी में, कि यह आपको x(property)
. तक सीधी पहुंच प्रदान करता है और y(property)
(इसके अलावा - क्या उन नामों में वास्तव में कोष्ठक हैं?)
तो मेरे लिए ऐसा लगता है कि आपको चीजों को बदलना चाहिए जैसे
* COS(RADIANS(z.(x(property))))
कुछ इस तरह के साथ
* COS(RADIANS( select x(property) from mytable where id = z.id ))
हालांकि इसके बारे में और सोचने पर, मुझे लगता है कि आपका mytable
आवश्यक संरचना नहीं है। लिंक को देखने से, मुझे विश्वास है कि आपका mytable
एक संरचना अधिक होनी चाहिए:
+-----------+----------------+
| Field | Type |
+-----------+----------------+
| id | Int(10) |
| latitude | Float |
| longitude | Float |
+-----------+----------------+
ताकि आप कुछ ऐसा कर सकें
* COS(RADIANS(z.latitude))
नोट
उपरोक्त मेरे द्वारा यह नहीं समझने पर आधारित था कि MySQL स्थानिक डेटा प्रकारों का समर्थन करता है (जिसके लिए मुझे नहीं पता कि कैसे उपयोग करना है)
अपडेट करें
मैंने स्थानिक प्रकारों को समझने के लिए बस कुछ गुगली की और इसे पाया:
एक्स त्रिज्या में सभी रिकॉर्ड खोजने के लिए आप MySQL स्थानिक प्रश्नों का उपयोग कैसे करते हैं? [बंद]
जो बताता है कि आप नहीं वह करें जो आप mysql में स्थानिक डेटा प्रकारों के साथ करना चाहते हैं। जो इस प्रकार आपको mutable
. में डेटा संग्रहीत करने के गैर-इष्टतम तरीके का उपयोग करने के लिए वापस लाता है
हालाँकि उस लिंक को फिर से पढ़ने में, उत्तर की टिप्पणियों से पता चलता है कि अब आप स्थानिक डेटा प्रकारों का उपयोग करने में सक्षम हो सकते हैं। (मैंने तुमसे कहा था कि मेरे पास यहां कोई सुराग नहीं है) इसका मतलब होगा कि क्वेरी कोड को ST_Distance(g1,g2)
जैसी चीजों से बदलना होगा। , जिसका प्रभावी अर्थ है उदाहरण को पूरी तरह से फिर से लिखना।
इसे दूसरे तरीके से रखने के लिए
अपडेट 2
आप तीन रास्तों का अनुसरण कर सकते हैं:
-
इनकार करें कि स्थानिक डेटा प्रकार MySQL में मौजूद हैं और एक तालिका का उपयोग करें जिसमें
lat
. के लिए स्पष्ट कॉलम हों औरlong
, और उस ब्लॉग पर मूल रूप से लिखे गए नमूना कोड का उपयोग करें। -
MySQL स्थानिक डेटा प्रकारों (मौसा और सभी) को गले लगाओ और इस तरह की चीजों पर एक नज़र डालें https:/ /stackoverflow.com/a/21231960/31326 ऐसा लगता है कि आप सीधे स्थानिक डेटा प्रकारों के साथ क्या चाहते हैं, लेकिन जैसा कि उस उत्तर में बताया गया है कि कुछ चेतावनी हैं।
-
अपना डेटा रखने के लिए स्थानिक प्रकार का उपयोग करें, और
pre-query
. का उपयोग करेंlat
extract निकालने के लिए औरlong
इसे मूल नमूना कोड में भेजने से पहले।