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

400 शहरों के बीच की दूरी की गणना करना और इसके लिए MySQL का अनुकूलन करना?

मैंने दो संभावित समाधान देखे।

पहला वाला:
डेटाबेस में प्रत्येक शहर के स्टोर के लिए उसका अक्षांश और देशांतर; जब उपयोगकर्ता को कोई प्रश्न मिलता है, तो आप हर दूसरे शहर के साथ दूरी की गणना करते हैं और परिणाम लौटाते हैं। " href="https://www.movable-type.co.uk/scripts/latlong.html">यहां आप अक्षांश-देशांतर दूरी कैल्क के लिए सूत्र, नमूने और कोड भी पा सकते हैं...

दूसरा:
एक टेबल बनाएं cities_dist तीन क्षेत्रों के साथ:city1_id, city2_id, distance और अपने शहरों के बीच हर संभव संयोजन के अंदर डाल दें। इसके साथ आप एक प्रश्न लिख सकते हैं, जो कि शहर 1_आईडी या शहर 2_आईडी का चयन कर रहा है। यह तालिका जब भी आप अपने डेटाबेस में एक नया शहर सम्मिलित करते हैं।

उपयोगकर्ता की टिप्पणी के बाद संपादित:
कल्पना कीजिए कि आपके पास तीन शहर हैं

ID  NAME
1   New York
2   Rome
3   Berlin

वह तालिका इस तरह दिखनी चाहिए

CITY1  CITY2  DIST
1      2      1500
1      3      1200
2      3       400

जब उपयोगकर्ता बर्लिन से उड़ान भरना चाहे तो आप उपयोग कर सकते हैं

SELECT c1.name, c2.name, cd.dist 
FROM cities_dist cd
  INNER JOIN cities c1 ON cd.city1 = c1.id
  INNER JOIN cities c2 ON cd.city2 = c2.id
WHERE cd.city1 = your_id
   OR cd.city2 = your_id
ORDER BY cd.dist ASC


  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 क्वेरी अलग-अलग परिणाम क्यों देती हैं

  2. क्या आप स्वचालित रूप से एक mysqldump फ़ाइल बना सकते हैं जो विदेशी कुंजी बाधाओं को लागू नहीं करती है?

  3. INSERT ... चुनें, InnoDB और लॉकिंग

  4. एक MySQL तालिका में डालें या मौजूद होने पर अपडेट करें

  5. वह सब चुनें जहां [पहला अक्षर B से शुरू होता है]