sql >> Databáze >  >> RDS >> Sqlserver

Získejte všechny body (kruhy s poloměrem), které překrývají daný bod

Ano, přesně tohle je ten druh geography a prostorové metody jsou dobré. Zde je krátký příklad:

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 );

Všimněte si, že zde pro konstrukci geography hodnot Používám implicitní převod z řetězce, který v zákulisí volá geography::Parse .

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

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


  1. Reprezentace IP adresy v databázi Maxmind Geolitecity

  2. Existuje [přímý] způsob, jak seřadit výsledky *nejprve*, *pak* seskupit podle jiného sloupce pomocí SQL?

  3. Jak získat počet nevyužitých/použitých připojení ve fondu připojení nodejs mysql?

  4. Laravel Od Raw DB k výmluvnému