sql >> データベース >  >> RDS >> Mysql

MySQL-データベースから半径内のポイントを検索

    私は現在、複数の場所の間の距離を計算しているプロジェクトに取り組んでいます。指定された半径内にあるobject_idを選択するために、次のクエリを使用しています。

    SELECT id, 
    ( 6371 * 
        ACOS( 
            COS( RADIANS( db_latitude ) ) * 
            COS( RADIANS( $user_latitude ) ) * 
            COS( RADIANS( $user_longitude ) - 
            RADIANS( db_longitude ) ) + 
            SIN( RADIANS( db_latitude ) ) * 
            SIN( RADIANS( $user_latitude) ) 
        ) 
    ) 
    AS distance FROM the_table HAVING distance <= $the_radius ORDER BY distance ASC"
    

    ACOSの公式は研究から得たものなので説明できません。

    db_latitude = database latitude field
    db_longitude = database longitude field
    $user_latitude = browser latitude coördinate
    $user_longitude = browser longitude coördinate
    $the_radius = the radius that you want to search in
    

    これはキロメートル単位です。



    1. PL / SQLを使用してクレジットカード番号を検証し、そのタイプを識別する方法は?

    2. WHERE句を使用して配列をクエリに渡す

    3. mysqldumpは1つのテーブルのみをエクスポートします

    4. メールアドレスフィールドから一意のドメインをカウントするMySQLクエリ