Wszystkie poprzednie odpowiedzi działają tylko na 1/4 świata!
Odpowiedź W3t Tr3y była bliska, ale zawierała błąd (dodatkowe „<”).
Wszystkie z nich działają tylko w USA, ponieważ znajdują się one na półkuli PÓŁNOCNEJ. Nie działają na półkuli południowej ani w krajach wschodnich (na prawo od Greenwich).
Oto proste rozwiązanie bez funkcji i skomplikowanych rzeczy.
litery są wynikami w kolejności, w jakiej otrzymujesz je z map.getBounds(), tj. 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)
lub inne rozwiązanie z i/lub (możesz przetestować pod kątem szybkości, nie wiem jak uruchomić go więcej niż raz w 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)
Teraz możesz zmapować cały świat :) Mam nadzieję, że ktoś może oznaczyć powyższe odpowiedzi jako niepoprawne, ponieważ sprawiają, że tracimy dużo czasu dla milionów uczących się ludzi takich jak ja. Zastanawiam się, jak zdobywają tyle głosów, kiedy w rzeczywistości nie działają!
PS:Szanse na to, że krawędź piksela Twojej mapy pasuje do dokładnej wartości 15 dziesiętnych współrzędnych, są biliony razy mniejsze niż prawdopodobieństwo pominięcia całego 3/4 świata!