ZipCodesとcustomersの2つのテーブルがあります。
ZipCodesにはとの列がlng
ありlat
、顧客には。がありzipcode
ます。
郵便番号の特定の距離にいるすべての顧客を取得するためのクエリが必要XXXXX
です。
XXXXXの特定の距離内にあるすべての郵便番号を取得するためのクエリがあります。
SELECT ZIPCODE,( 3959 * ACOS( COS( RADIANS( $la ) ) * COS( RADIANS( LAT ) ) * COS( RADIANS( LNG ) - RADIANS( $lo ) ) + SIN( RADIANS( $la ) ) * SIN( RADIANS( LAT ) ) ) ) AS distance
FROM ZipCodes
HAVING distance <$rad
ORDER BY distance
LIMIT 0 , 20
結合がどのように機能するのか、SQLでこれをどのように表現するのかがわかりません。何か答えがあれば説明していただければ幸いです。そうでなければ私もそれを理解しています。
私の論理はこれです:
SELECT name FROM Customers WHERE Customers.zipcode = ( SELECT ZIPCODE,( 3959 * ACOS( COS( RADIANS( $la ) ) * COS( RADIANS( LAT ) ) * COS( RADIANS( LNG ) - RADIANS( $lo ) ) + SIN( RADIANS( $la ) ) * SIN( RADIANS( LAT ) ) ) ) AS distance
FROM ZipCodes
HAVING distance <$rad
ORDER BY distance
LIMIT 0 , 20)