0

近くの場所のリスト(最も近いものから順に)を使用してMySQLクエリを実行しようとしています。どうすればいいのかわからなかった。私はこの興味深い投稿を見つけました:http://funkjedi.com/technology/308-search-using-geolocation-data-in-mysql/

すべての継ぎ目は私には明らかです。しかし、クエリは機能しません。次のSQLクエリを作成しました。

SELECT *, ($distance_formula) AS distance FROM restaurants 
    WHERE (geolatitude BETWEEN $lat_b1 AND $lat_b2) 
    AND (geolongitude BETWEEN $lng_b1 AND $lng_b2) 
    HAVING distance < $radius ORDER BY distance ASC

私が得るエラーは次のとおりです。

Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column '$distance_formula' in 'field list'

重要なのは、$ distance_formulaはスクリプトで作成され、フィールドリストではないということです。そうです。しかし、これが実行され、フィールドではないことをMySQLが認識している場合、これをどのように行う必要がありますか?

他に何か助けや他の解決策(グリーンから)があれば、私はとても幸せです。最後に、cakephpのソリューションが必要です。

どうもありがとう

Ivo

4

1 に答える 1

0

Windows と UNIX 形式のファイルに誤りがあるか、例にいくつかの記述上の問題がある場合があるため、コマンドを少し変更してコマンドを次のように記述してください。

 $sql = "SELECT *, (" . $distance_formula . ") AS distance FROM listings WHERE (latitude BETWEEN " . $lat_b1 . " AND " . $lat_b2 . ") AND ( longitude BETWEEN " . $lng_b1 . " AND . " $lng_b2 . ") HAVING distance < " . $radius . "ORDER BY distance ASC";
于 2013-02-16T15:24:19.707 に答える