トラブルとSQLite SQLクエリー[複製]
質問
この問いは正確な複製のもの
私のしているため、以下のクエリにSQLite3:
SELECT *,
DISTANCE(latitude, longitude, ?, ?) AS "distance"
FROM "country"
WHERE "id" NOT LIKE ?
HAVING "distance" <= ?
ORDER BY "distance" ASC;
私は以下のようなエラー:
SQLSTATE[HY000]:一般的なエラー:1 グループによる条項を求めて 有
かわからないのはなぜSQLiteいうグループの成果だったの
SELECT *,
DISTANCE(latitude, longitude, ?, ?) AS "distance"
FROM "country"
WHERE "id" NOT LIKE ?
GROUP BY "id"
HAVING "distance" <= ?
ORDER BY "distance" ASC;
ともっこ
SELECT *,
DISTANCE(latitude, longitude, ?, ?) AS "distance"
FROM "country"
WHERE "id" NOT LIKE ?
GROUP BY "distance"
HAVING "distance" <= ?
ORDER BY "distance" ASC;
誤りがないが、すべての記録がまとめて返却しても有 "distance" > ?
).もったい:
SELECT *,
DISTANCE(latitude, longitude, ?, ?) AS "distance"
FROM "country"
WHERE "id" NOT LIKE ?
AND "distance" <= ?
ORDER BY "distance" ASC;
同じ出力、すべてのレコードが返されます。私はダブルチェックの距離が正確に算出し...私はその間違ったこのクエリは、誰か助けてくれですか。
解決
できませんの指定 HAVING
句なしで指定 GROUP BY
を提供しています。用途:
SELECT *,
DISTANCE(latitude, longitude, ?, ?) AS dist
FROM COUNTRY c
WHERE c.id NOT LIKE ?
AND DISTANCE(c.latitude, c.longitude, ?, ?) <= ?
ORDER BY dist;
されない場合、呼び出距離は、以下に利用できるサブクエリ:
SELECT x.*
FROM (SELECT c.*,
DISTANCE(latitude, longitude, ?, ?) AS dist
FROM COUNTRY c
WHERE c.id NOT LIKE ?) x
WHERE x.dist <= ?
ORDER BY dist;
他のヒント
よりよい(やく)する考え方もあ削減の選択前に設定を適用する。その結果が、先ほど任天堂さんのようなアプローチ:
SELECT*from場所abs(緯度-51.123) < 0.12や資産担保証券(abs、緯度-経度-0.123) < 0.34る距離(緯度、経度、51.123,0.123)
アクセス(51.123,0.123)を中心緯度経度点だけを検索対比の値が0.12と0.34使って絞込み検索する緯度経度スクエア-オン-領域の適切なサイズ(つまり平nキロメートによるnキロの時点では、地球のサイズに依存して平均分布の箇所)。使える程度の長さの定式から http://en.wikipedia.org/wiki/Longitude どのような動作するように、これらの価値をさらに検索の点の位置は、地球。
では構文エラーが必要になるということがグループは、"ご利用の場合に有原因
検索するとグループは取得の記録のみを有する"距離">)であり、データベースのルールが最初の質といっても難しいことではなくデータと一致するレコードで行うグループによるものですフィルタリング記録によります。いデータのみを有する"距離" <)
題がある可能性がありますが私は間違い
さらに、正しい<日本語仮抄訳>欧州連答え、されない場合、呼び出距離関数回については、別名のWHERE句ます。e:
SELECT *,
DISTANCE(latitude, longitude, ?, ?) AS dist
FROM COUNTRY c
WHERE c.id NOT LIKE ?
AND dist <= ?
ORDER BY dist;