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

किसी स्थान के आस-पास के उपनगरों की सूची कैसे प्राप्त करें और फिर MySQL का उपयोग करके अन्य स्थानों के लिए दोहराएं?

आपको बस सेल्फ-जॉइन करने की जरूरत है। शामिल होना टेबल एक बहुत है SQL का मूलभूत हिस्सा—आप वास्तव में इस उत्तर को और समझने की कोशिश करने से पहले इसे पढ़ना चाहिए।

SELECT   poi.asciiname,
         suburb.asciiname,
         suburb.country,
         DEGREES(
           ACOS(
             SIN(RADIANS(   poi.latitude))
           * SIN(RADIANS(suburb.latitude))
           + COS(RADIANS(   poi.latitude))
           * COS(RADIANS(suburb.latitude))
           * COS(RADIANS(poi.longitude - suburb.longitude))
           )
         ) * 60 * 1.852 AS distance
FROM     geoname AS poi
    JOIN geoname AS suburb
WHERE    poi.asciiname IN ('Tamworth', 'Birmingham', 'Roanoke')
     AND poi.population > 0
     AND poi.fcode = 'PPL'
     AND suburb.fcode IN ('PPLX', 'PPPL')
HAVING   distance <= 60
ORDER BY poi.asciiname, distance

इसे sqlfiddle पर देखें ।

आपने देखा होगा कि मैंने MySQL के IN() value = A OR value = B OR ... . के लिए शॉर्टहैंड के रूप में ऑपरेटर ।

आपने यह भी देखा होगा कि मैंने MySQL के DEGREES() और RADIANS() ऐसे रूपांतरणों को स्पष्ट रूप से करने की कोशिश करने के बजाय कार्य करता है।

तब आप अक्षांश के मिनटों को 1.851999999962112 . के गुणनखंड से गुणा कर रहे थे , जो काफी अजीब था:यह 1.852 . के बेहद करीब है , जो एक समुद्री मील में किलोमीटर की सटीक संख्या है (ऐतिहासिक रूप से अक्षांश के एक मिनट के रूप में परिभाषित), लेकिन फिर भी विचित्र रूप से थोड़ा अलग-मैंने माना है कि आप इसके बजाय इसका उपयोग करना चाहते थे।

अंत में, आपके पास शाब्दिक मूल्य था जिसके द्वारा आप परिणाम में दूरियों को एक स्ट्रिंग के रूप में फ़िल्टर कर रहे थे, अर्थात '60' , जबकि स्पष्ट रूप से यह एक संख्यात्मक मान है और इसे गैर-उद्धृत किया जाना चाहिए।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. सीक्वेलाइज़ को एकवचन तालिका नामों का उपयोग कैसे करें

  2. MySQL शब्दावली बाधाओं बनाम विदेशी कुंजी अंतर?

  3. बहुभाषी डेटा रखने के लिए सबसे अच्छी डेटाबेस संरचना क्या है?

  4. GROUP BY का उपयोग करते समय अनुपलब्ध (शून्य-गिनती) पंक्तियों सहित

  5. MySQL डेटाबेस में सभी तालिकाओं के लिए रिकॉर्ड गणना प्राप्त करें