2013-02-25 3 views
-1

У меня есть эта таблицаSQL широта запроса и долгота

CREATE TABLE [dbo].[EnquiryMaster](
    [EnquiryId] [int] IDENTITY(1,1) NOT NULL, 
    [orgid] [int] NULL, 
    [uid] [int] NULL, 
    [Company] [varchar](160) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, 
    [HeadOfficeAddress] [varchar](460) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, 
    [ZipCode] [varchar](6) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, 
    [Latitude] [float] NOT NULL, 
    [Longitude] [float] NOT NULL, 

    CONSTRAINT [PK_EnquiryMaster] PRIMARY KEY CLUSTERED 
    (
     [EnquiryId] ASC 
    )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] 
) ON [PRIMARY] 

Я хочу написать запрос таким образом, что он будет отображать все предприятия в пределах 100 градусов широты и долготы компании, я буду выбрать из выпадающего список.

ответ

1

Попробуйте

select * 
from [dbo].[EnquiryMaster] 
where (Latitude <= @lat and Longitude <= @long 
     and Latitude + 100 >= @lat and Longitude +100 >= @long) 
OR (Latitude >= @lat and Longitude >= @long 
     and Latitude - 100 <= @lat and Longitude -100 <= @long) 
OR (Latitude >= @lat and Longitude <= @long 
     and Latitude - 100 <= @lat and Longitude + 100 >= @long) 
OR (Latitude <= @lat and Longitude >= @long 
     and Latitude + 100 >= @lat and Longitude - 100 <= @long) 
1
where Latitude between @lat - 100 and @lat + 100 
and Longitude between @long - 100 and @long + 100 
Смежные вопросы