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

स्थानिक डेटा क्वेरी में मामूली बदलाव को हल करने के लिए विशेषज्ञ की मदद चाहिए

मुझे ऐसा लगता है कि आप मान रहे हैं कि एक बार आपने 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

आप तीन रास्तों का अनुसरण कर सकते हैं:

  1. इनकार करें कि स्थानिक डेटा प्रकार MySQL में मौजूद हैं और एक तालिका का उपयोग करें जिसमें lat . के लिए स्पष्ट कॉलम हों और long , और उस ब्लॉग पर मूल रूप से लिखे गए नमूना कोड का उपयोग करें।

  2. MySQL स्थानिक डेटा प्रकारों (मौसा और सभी) को गले लगाओ और इस तरह की चीजों पर एक नज़र डालें https:/ /stackoverflow.com/a/21231960/31326 ऐसा लगता है कि आप सीधे स्थानिक डेटा प्रकारों के साथ क्या चाहते हैं, लेकिन जैसा कि उस उत्तर में बताया गया है कि कुछ चेतावनी हैं।

  3. अपना डेटा रखने के लिए स्थानिक प्रकार का उपयोग करें, और pre-query . का उपयोग करें lat extract निकालने के लिए और long इसे मूल नमूना कोड में भेजने से पहले।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql को mysqli में बदलें?

  2. विभिन्न डेटा स्रोतों को पढ़ने/लिखने के लिए हाइबरनेट कैसे सेट करें?

  3. यदि तालिका मौजूद नहीं है तो एक लंबी क्वेरी निष्पादित करें

  4. डेटाबेस में टैग (कीवर्ड) कैसे सहेजते हैं?

  5. PHP कैशिंग - क्या डेटाबेस में सहेजना या फ़ाइल बनाना तेज़ है?