ВЫБЕРИТЕ имя ГДЕ точка в квадрате - PullRequest
0 голосов
/ 27 апреля 2020

Я знаю, что это больше математическая проблема, но я не уверен, как правильно выполнять математику в запросе. То, что я пытаюсь сделать, это получить столбец из базы данных, где точка (x, y) находится внутри области, сохраненной в другом столбце этой строки (x, y) - (x + 16, y + 16).

База данных выглядит примерно так:

+--------+---------------+
|  Name  |    Position   |
+--------+---------------+
|Area1   |16:32          |
|Area2   |-32:16         |
|Area3   |128:64         |
+--------+---------------+

Область - это сохраненные кординаты (X: Y) + 16. В основном это сетка из 16х16 областей. Я пытаюсь получить название области по положению точки (x, y), которая может находиться где угодно в этой области.

Если это облегчит задачу, можно изменить Столбец «Позиция» для 2-х различий, что-то вроде:

+--------+---------------+---------------+
|  Name  |  Position_x   |  Position_Y   |
+--------+---------------+---------------+
|Area1   |16             |32             |
|Area2   |-32            |16             |
+--------+---------------+---------------+

Заранее спасибо!

1 Ответ

1 голос
/ 27 апреля 2020

Если я вас правильно понимаю, вам просто нужно проверить, что значение x находится в диапазоне от Position_x до Position_x+15 (включительно) и одинаково для y:

SELECT *
FROM areas
WHERE 20 BETWEEN Position_x AND Position_x + 15
  AND 40 BETWEEN Position_y AND Position_y + 15

Вывод (для ваших образцов данных):

Name    Position_x  Position_Y
Area1   16          32

Демонстрация на dbfiddle

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...