1

私はこの関数を使用して 30 マイル以内のイベントを取得しています。これは、オタク ディナーのイベントとほとんど同じです。しかし、「最も近い」でそれらを注文するにはどうすればよいですか..?

ALTER FUNCTION [dbo].[NearestEvents] 
  ( 
  @lat real, 
  @long real 
  ) 
RETURNS  TABLE 
AS 
  RETURN 
  SELECT Events.ID 
  FROM   Events  
  WHERE  dbo.DistanceBetween(@lat, @long, Latitude, Longitude) <30 
4

1 に答える 1

3

SELECT リストに追加します。

SELECT Events.ID,
  dbo.DistanceBetween(@lat, @long, Latitude, Longitude) as distance
  FROM   Events  
  WHERE  dbo.DistanceBetween(@lat, @long, Latitude, Longitude) <30 
  ORDER BY distance

-- OP ではまだ機能していないため、ストアド プロシージャをデバッグする良い方法は、パラメーターをハイジャックすることです。これを Query Analyzer で試して、次の結果が得られることを確認してください。

DECLARE @lat = varchar(100);
DECLARE @long = vavhar(100);

SET @lat = 'XXXXX';
SET @long = 'XXXXX';

 SELECT Events.ID,
      dbo.DistanceBetween(@lat, @long, Latitude, Longitude) as distance
      FROM   Events  
      WHERE  dbo.DistanceBetween(@lat, @long, Latitude, Longitude) <30 
      ORDER BY distance;
于 2011-01-10T23:44:50.053 に答える