sql >> Database >  >> RDS >> Sqlserver

Krijg alle punten (cirkels met straal), die een bepaald punt overlappen

Ja, dit is precies het soort dingen dat geography en ruimtelijke methoden zijn goed in. Hier is een kort voorbeeld:

DECLARE @Restaurant TABLE (
    Name nvarchar(50),
    Location geography,
    DeliveryRadiusMetres int
);

INSERT @Restaurant
VALUES
-- long lat
('Dominos','POINT(-0.109339 51.532835)',2000 ),
('Pizza Hut','POINT(-0.102961 51.541157)',2000 );

Merk op dat hier om de geography . te construeren waarden Ik gebruik een impliciete conversie van string, die achter de schermen geography::Parse aanroept .

DECLARE @MyLocation geography = 'POINT(-0.115063 51.550231)';

SELECT
    Name
FROM
    @Restaurant R
WHERE
    R.Location.STDistance(@MyLocation) <= R.DeliveryRadiusMetres
;


  1. subquery retourneert meer dan 1 rij

  2. QuickBooks-gegevens analyseren in Dundas BI

  3. SSL gebruiken met SQLAlchemy

  4. Mysql geeft rijen weer als kolommen