私は次のようなテーブルを持っています:-
表:お得な情報 + ---- + ------- + ---------- + ---------- + ------------ + | ID | 名前| 緯度| 経度| end_date | | ---- + ------- + ---------- + ---------- + ------------ + | 1 | ピザ| 10.5 | -10.5 | 2012-12-12 | | 2 | ピザ| 11.5 | -10.5 | 2012-12-12 | | 3 | ゼリー| 21.5 | -10.5 | 2012-12-12 | | 4 | ゼリー| 23.5 | -10.5 | 2012-12-12 | | 5 | ユリ| 19.5 | -10.5 | 2012-12-12 | + ---- + ------- + ---------- + ---------- + ------------ +
私はとを使用して、latitude
そのlongitude
人までの距離を見つけています。DISTINCT
しかし、結果はに基づく必要がありname
ます。また、計算した距離で結果を並べ替えて、制限0.3を適用する必要があります。
私が現在使用しているクエリは"-
SELECT *,
( 6371 * Acos(Cos(Radians(9.939625)) * Cos(Radians(lat)) * Cos(
Radians(lng) - Radians(76.259498)) +
Sin(Radians(9.939625)) * Sin(Radians(lat))) ) AS
distance
FROM deals
WHERE 1
AND end_date >= Now()
HAVING distance < 20000
ORDER BY id DESC,
distance
LIMIT 0, 3;
つまり、私が必要としているのは次のとおりです。
- 最も近い取引のリスト(距離でソート)
- に区別して適用します
name
(ピザとゼリーの両方が1回だけ表示されるように)