很抱歉在这里问一个非常笼统的问题,可能是错误的地方,但这里的答案很好,所以我试一试。
我有一个 MYSQL 数据库,1 个地理特征表。1 表操作员在两点之间飞行的位置
|Flyings company|Point A|Point B|
|Company ID |A ID | B ID |
搜索如何混合和匹配从 X 点到 Y 点的方式的最简单方法是什么?如果您必须从 X 到 B、B 到 F、F 到 G、G 到 Y。欢迎接受任何建议,了解此问题是否已关闭。
从理论上讲,您确实需要图形算法。实际上,如果您通过腿数进行迭代并愿意将其限制在某个合理的数量,您可以尝试使用自连接查询:
单腿路线:
select leg1.company, leg1.a_id, leg1.b_id
from flights leg1
where leg1.a_id=1 and leg1.b_id=2
两条腿路线:
select leg1.company, leg1.a_id, leg1.b_id, leg2.company, leg2.b_id
from flights leg1 join flights leg2 on leg1.b_id=leg2.a_id
where leg1.a_id=1 and leg2.b_id=2
三段线路:
select leg1.company, leg1.a_id, leg1.b_id, leg2.company, leg2.b_id, leg3.company, leg3.b_id
from flights leg1 join flights leg2 on leg1.b_id=leg2.a_id join flights leg3 on leg2.b_id join leg3.a_id
where leg1.a_id=1 and leg3.b_id=2
依此类推,直到你的极限。
您想要的是使用您的数据构建有向图。节点将匹配地理点,边将匹配两点之间的操作
然后您继续查找所需的两个任意节点之间的所有路径。
这不是您可以仅通过数据库查询来解决的问题:您必须(可能不是一次,但最终)加载所有数据,以便构建完整的图表并提供完整的答案列表。