0

緯度と経度の値を含む注目広告と非注目広告を含む広告テーブルがあります。ユーザーが特定の場所から距離を置いて広告を検索すると、500 km 未満の注目広告を一番上に表示したいと考えています。選択された場所、および他のすべての広告は賢明に無制限の距離まで距離を置き、その後に注目のリストが続きます。

最初に注目のリストを無制限の距離まで表示し、次に距離関数と注目の句による順序を使用して他の残りの広告を表示できます。しかし、最初に 500km 未満を表示し、次に残りの広告を無制限の距離に表示する注目のリストを作成する方法.

ユニオンを使用する必要がありますか?他に解決策はありますか?

ソースの場所

latitude = -37.814563
longitude = 144.970267
SELECT da.*,( 6371 * acos( cos(radians(144.970267)) * cos(radians(da.loc_lng)) * 
cos(radians(-37.814563) - radians(da.loc_lat)) + sin(radians(144.970267)) *  
sin(radians(da.loc_lng)) )) as distanceSort FROM directory_ads da WHERE da.approved = 1 
AND da.deleted = 0  ORDER BY da.featured DESC, distanceSort ASC
4

1 に答える 1

1

これは、条件付きの次のorder by句で行うことができます。

order by (case when da.featured > 0 and DistanceSort < 500
               then distance_sort else 500
          end),
         DistanceSort
于 2013-05-30T01:11:48.103 に答える