Mysql
 sql >> база данни >  >> RDS >> Mysql

Получаване на всички записи от MySQL база данни, които са в Google Maps .getBounds?

Всички предишни отговори работят само за 1/4 от света!

Отговорът на W3t Tr3y беше близо, но имаше грешка (допълнително "<").

Всички те работят само за САЩ, защото се намират в СЕВЕРНОТО полукълбо. Те не работят за южното полукълбо, нито за източните страни (вдясно от Гринуич).

Ето едно просто решение без функции или сложни неща.

буквите са резултатите в реда, в който ги получавате от map.getBounds(), т.е. swlat, swlng, nelat, nelng =a, b, c, d.

SELECT * FROM tilistings WHERE
(CASE WHEN a < c
        THEN lat BETWEEN a AND c
        ELSE lat BETWEEN c AND a
END) 
AND
(CASE WHEN b < d
        THEN lng BETWEEN b AND d
        ELSE lng BETWEEN d AND b
END) 

или друго решение с и/или (можете да го тествате за скорост, не знам как да го стартирам повече от веднъж в WorkBench)

SELECT * FROM tilistings WHERE
(a < c AND lat BETWEEN a AND c) OR (c < a AND lat BETWEEN c AND a)
AND 
(b < d AND lng BETWEEN b AND d) OR (d < b AND lng BETWEEN d AND b)

Сега можете да картографирате целия свят :) Надявам се някой да отбележи горните отговори като неверни, защото ни карат да губим много време за милиони учещи хора като мен. Чудя се как получават толкова много гласове, когато всъщност не работят!

PS:Шансовете ръбът на пиксела на вашата карта да съвпада с точните 15 десетични стойности на координатите е милиони пъти по-малък от шансовете да пропуснете цели 3/4 от света!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Валиден ли е VARCHAR(20000) в MySQL?

  2. Как да транспонирате MYSQL db в PHP

  3. Как да коригирам:Не е намерен подходящ драйвер за грешка jdbc:mysql://localhost/dbname при използване на пулове?

  4. По-ефективна йерархична система

  5. UPDATE с ORDER BY и LIMIT не работи в MYSQL