Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

mySQL pilih kode pos dalam x km/mil dalam jangkauan y

Anda harus menggunakan sesuatu yang disebut rumus Haversine :

$sql = "
    SELECT zipcode
    FROM zipcodes
    WHERE ".mysqlHaversine($lat, $lon, $distance)."
";

Dan rumusnya:

function mysqlHaversine($lat = 0, $lon = 0, $distance = 0)
{
    if($distance > 0)
    {
        return ('
        ((6372.797 * (2 *
        ATAN2(
            SQRT(
                SIN(('.($lat*1).' * (PI()/180)-latitude*(PI()/180))/2) *
                SIN(('.($lat*1).' * (PI()/180)-latitude*(PI()/180))/2) +
                COS(latitude * (PI()/180)) *
                COS('.($lat*1).' * (PI()/180)) *
                SIN(('.($lon*1).' * (PI()/180)-longitude*(PI()/180))/2) *
                SIN(('.($lon*1).' * (PI()/180)-longitude*(PI()/180))/2)
                ),
            SQRT(1-(
                SIN(('.($lat*1).' * (PI()/180)-latitude*(PI()/180))/2) *
                SIN(('.($lat*1).' * (PI()/180)-latitude*(PI()/180))/2) +
                COS(latitude * (PI()/180)) *
                COS('.($lat*1).' * (PI()/180)) *
                SIN(('.($lon*1).' * (PI()/180)-longitude*(PI()/180))/2) *
                SIN(('.($lon*1).' * (PI()/180)-longitude*(PI()/180))/2)
            ))
        )
        )) <= '.($distance/1000). ')');
    }

    return '';
}

Biasanya saya tidak menggunakan kode tanpa memahami cara kerjanya terlebih dahulu, tetapi saya harus mengakui fungsi ini sedikit di atas kepala saya...



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana saya bisa mendapatkan jumlah pelanggan per hari dengan pelanggan unik dan berulang untuk tanggal tertentu?

  2. Cara terbaik untuk menyimpan pesan obrolan dalam database?

  3. Menyortir kueri MySQL dengan ORDER BY atau dengan fungsi sortir PHP

  4. Bagaimana cara menghubungkan NetBeans ke database MySQL?

  5. Bagaimana algoritma peringkat Reddit dan Hacker News digunakan?