Ниже приведена моя таблица postal
с несколькими записями. Фактически эта таблица содержит все города и все почтовые индексы.Выберите записи на основе почтового индекса и его радиуса в MySQL
id city postalcode latitude longitude
1 Drogteropslagen 7705 PA 52.61666700 6.50000000
2 Coevorden 7740 AA 52.66666700 6.75000000
3 Emmen 7812 TN 52.78333300 6.90000000
4 Emmer-Compascuum 7881 PZ 52.81666700 7.05000000
5 Nieuw-Dordrecht 7885 AA 52.75000000 6.96666700
Ниже мой company
таблица с его почтовый индекс и радиус в километрах, где каждая компания может предоставить свои услуги.
id company_name city postalcode radius latitude longitude
1 A Emmen 7812 TN 10 52.78333300 6.90000000
2 B Nieuw-Dordrecht 7885 AA 5 52.75000000 6.96666700
3 C Drogteropslagen 7705 PA 25 52.61666700 6.50000000
4 D Foxhol 9607 PR 0 53.16666700 6.71666700
5 E Westerbroek 9608 PA 15 53.18333300 6.68333300
Я бы хотел (а) выбрать компании, которые имеют конкретный почтовый индекс, например. 7740 AA
живет в зоне почтового индекса плюс радиус компании. Обратите внимание, что конкретный почтовый код может не всегда существовать в таблице company
, но всегда существует в таблице postal
. Как написать запрос sql, чтобы выбрать эти компании.
Начать с алгоритма расстояния – Strawberry
@Strawberry Нет алгоритма, потому что он (умнее) уже кэшировал широту и долготу для каждой компании. Вместо этого он может использовать формулу Хавинэна для определения расстояния. –
Хорошо. Используйте алгоритм, содержащий только один шаг. – Strawberry