このGoogle チュートリアルの修正を完了しようとしています
場所の「名前」を使用して場所のテーブルをクエリするために、この SQL を作成しました。場所の名前を指定すると、クエリは近くにあるピザ レストランを返します。これを達成するために、「マーカー」というタイトルのレストランの場所のテーブルをそれ自体にクロス結合し、Haversine 式を使用して距離を計算しました。
SELECT m.address,
m.name,
m.lat,
m.lng,
(3959 * ACOS(COS(RADIANS(poi.lat)) *
COS(RADIANS(m.lat)) *
COS(RADIANS(m.lng) - RADIANS(poi.lng)) + SIN(RADIANS(poi.lat))*
SIN(RADIANS(m.lat)))) AS distance
FROM markers poi
CROSS JOIN markers m
WHERE poi.address LIKE "%myrtle beach%"
AND poi.id <> m.id HAVING distance < 200
ORDER BY distance LIMIT 0,20
クエリは期待どおりの結果を返しますが、対象のポイントが指定されたエリア (この場合は「マートル ビーチ」) の外にある場合、一致ごとに重複したレコードが取得されます。これは、CROSS JOIN が DISTINCT 選択で簡単に修正できるためです。ただし、「lng」フィールドと「lat」フィールドは FLOAT 型であるため、レコードが重複していても、距離の計算が同一になることはありません。
返品のサブセットは次のとおりです。
3901 North Kings Highway Suite 1、マートル ビーチ、サウスカロライナ州 | イースト オブ シカゴ ピザ カンパニー | 33.716099 -78.855583 | 4.0285562196955125
1706 S Kings Hwy # A、マートル ビーチ、サウスカロライナ | ドミノ・ピザ: マートルビーチ | 33.674881 | -78.905144 | 4.0285562196955125
82 ウェントワース ストリート、チャールストン、サウスカロライナ | Andolinis ピザ | 2.782330 | -79.934235 | 85.68177495224947
82 ウェントワース ストリート、チャールストン、サウスカロライナ | Andolinis ピザ | 32.782330 | -79.934235 | 89.71000040441085
114 Jungle Rd、エディスト島、サウスカロライナ | Edisto Beach Inc のバックス ピザ | 32.503971 -80.297951 | 114.22243529200529
114 Jungle Rd、エディスト島、サウスカロライナ | Edisto Beach Inc のバックス ピザ | 32.503971 -80.297951 | 118.2509427998286"
ここからどこへ行くべきかについての提案はありますか?