-2

地理距離を計算する次のクエリがあります。

SELECT (
   (ACOS(SIN(39 * PI() / 180) * 
         SIN(`latitude` * PI() / 180) +
         COS(39 * PI() / 180) *
         COS(`latitude` * PI() / 180) *
         COS((32–`poi.longitude`) * PI()/180)
        ) * 180 / PI()
   ) * 60 * 1.1515
       ) AS distance
FROM     `poi`
HAVING   distance <= 10
ORDER BY distance ASC

クエリを実行すると、次のエラーが表示されます。

構文エラーまたはアクセス違反: 1064 SQL 構文にエラーがあります。near '– poi.longitude) * PI()/180...を使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

したがって、(32–<code>poi.longitude) を (3) のような数値に置き換えると機能しますが、(32–21) を数学演算として使用してもエラーがスローされます。poi.longitude(引用符で )、経度などに置き換えlongitudeますが、何も機能しないようです。何か案は?

4

2 に答える 2

3

構文エラーの理由は、テーブル名と列名を逆引用符で囲み、サーバーが不明な列を検出する原因となっているためです。

`poi.longitude` -- searches for column name [poi.longitude] and not
                -- [longitude] from table [poi]

そのはず

`poi`.`longitude`

また

poi.longitude
于 2013-03-28T13:06:56.757 に答える
1

適切なマイナス記号 - を使用していません。

于 2013-03-28T13:44:41.990 に答える