mysql подвергают сомнению путь/радиус

У меня есть 2 стола: город и city_neighbor .

city contains a list of all cities while city_neighbor contains the neighbor(s) of a given city: insert into city_neighbor (city_id, neighbor_id) Values(1,2) - where neighbor_id is the id of another city from the city table. Nothing too fancy.

То, что я должен построить, является страницей, где пользователь может выбрать все города в данном радиусе. Исключая: выберите все города, граничащие с Чикаго в радиусе 5 городов, например. ВАЖНЫЙ: это - радиус 5 городов. Я не могу использовать радиус миль/км, я должен использовать этот стиль пути радиуса (никакой lat/long не связал ответы, пожалуйста).

Второй сценарий: пользователь хочет выбрать заказанное возрастание всех городов количеством скачков (где скачок - один город, который должен быть пройден, чтобы добраться от (Чикаго) к B).

Какие-либо идеи?

P.S. Моя база данных содержит ~8 000 городов.

0
nl ja de
Вы don' t хотят сделать, это - SQL. Сделайте это после того, как вы извлечете данные. Вероятно, вы будете просто рекурсивно восстанавливать всех соседей отобранного города на глубину 5.
добавлено автор jsj, источник

1 ответы

FUNCTION: CountNeighbors
IMPORT: city, depth
EXPORT: neighbors
ALGORITHM:
   neighbors = SET
   ++depth
   direct_neighbors = SELECT NEIGHBORS OF city
   neighbors += direct_neighbors
   IF depth < 5
       FOR EACH neighbor IN direct_neighbors
           neighbors += CountNeighbors(neighbor, depth, result)
3
добавлено
DBA - русскоговорящее сообщество
DBA - русскоговорящее сообщество
1 345 участник(ов)

Общаемся и обсуждаем темы, посвященные DBA, PostgreSQL, Redis, MongoDB, MySQL, neo4j, riak и т.д. См. также: @devops_ru, @kubernetes_ru, @docker_ru, @nodejs_ru Рекомендуем сразу отключить уведомления, чтобы пребывание здесь было полезным и комфортным.

MySQL
MySQL
995 участник(ов)

The group is about MySQL. For code use hastebin.com. Admin: @smlkw

SqlCom.ru - Стиль жизни SQL
SqlCom.ru - Стиль жизни SQL
908 участник(ов)

Правила чата - https://t.me/sqlcom/88269 @sqlcom - основной канал (только MS SQL) @sql_ninja - второй канал (SQL вопросы начального уровня и свободное общение) @Gopnegbot - Викторина по SQL Server (наберите в привате /quiz). Предложения в @sql_ninja

SQL_Ninja
SQL_Ninja
340 участник(ов)

Правила чата - https://t.me/sqlcom/88269 @sqlcom - основной канал (только SQL) @sql_ninja - второй канал (SQL вопросы начального уровня и свободное общение) @Gopnegbot - Викторина по SQL Server (наберите в привате /quiz)