2010-08-20 19 views
11

पर आधारित mysql से परिणाम प्राप्त करें मेरे पास एक mysql डेटाबेस है और 2 टेबल क्लाइंट और स्कूल कहें। अब प्रत्येक तालिका में स्तंभ अक्षांश और देशांतर है। और मुझे दूसरी तालिका से उदाहरण के लिए चयन करना होगा जहां स्कूल पहली तालिका से एक रिकॉर्ड के दिए गए त्रिज्या में हैं। अक्षांश अक्षांश और देशांतर के आधार पर गणना की जानी चाहिए। पीएस: मैं PHP का उपयोग कर रहा हूँ।अक्षांश देशांतर

+2

पिस्कवोर के उत्तर के अलावा, यह ट्यूटोरियल काफी अच्छा है: [MySQL के साथ भौगोलिक दूरी खोज] (http://www.scribd.com/doc/2569355/Geo-Distance- सर्च-साथ-माईएसक्यूएल), हालांकि मुझे पता चला कि पेज बहुत अच्छी तरह लोड नहीं हुआ है। एक विकल्प के रूप में, पावरपॉइंट प्रेजेंटेशन [यहां] पाया जा सकता है (http://www.mysqlconf.com/mysql2008/public/schedule/detail/347)। – Mike

उत्तर

9

आप एक Spherical law of cosines का उपयोग कर एक दूरी की गणना कर सकते हैं: -
ACOS(X) रेडियंस में डिग्री -

SELECT DEGREES(ACOS(SIN(RADIANS(clients.latitude)) * SIN(RADIANS(schools.latitude)) + 
        COS(RADIANS(clients.latitude)) * COS(RADIANS(schools.latitude)) 
                * COS(RADIANS(clients.longitude 
                   – schools.longitude)))) 
     * 60 * 1.1515 * 1.609344 AS distance 
FROM clients, schools HAVING distance < $radius 

RADIANS(X) एक्स के चाप कोज्या, कि है, वह मान जिसकी कोज्या एक्स
DEGREES(X) है - करने के लिए रेडियंस डिग्री

60 - एक nautical mileमें मील - एक डिग्री में मिनट
1.1515 10 1.60 9 344 - एक मील में किलोमीटर

+0

धन्यवाद, मैं अब कोशिश करूँगा और स्वीकार कर रहा हूं कि यह काम कर रहा है या नहीं। – Centurion

+1

तो यदि मेरा त्रिज्या किलोमीटर में है तो प्रश्न आपके जैसा लिखने जैसा होगा या मुझे इसे बदलना चाहिए? धन्यवाद – Centurion

+0

माईस्क्ल एक त्रुटि देता है: अज्ञात कॉलम 'क्लाइंट। लोंग्यूड-स्कूल। लोंग्यूड्यूड' 'फ़ील्ड लिस्ट' में ..., '-' साइन का अर्थ क्या है? – Centurion

संबंधित मुद्दे