0

很抱歉在这里问一个非常笼统的问题,可能是错误的地方,但这里的答案很好,所以我试一试。

我有一个 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。欢迎接受任何建议,了解此问题是否已关闭。

4

2 回答 2

1

从理论上讲,您确实需要图形算法。实际上,如果您通过腿数进行迭代并愿意将其限制在某个合理的数量,您可以尝试使用自连接查询:

单腿路线:

   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

依此类推,直到你的极限。

于 2013-01-17T20:10:46.470 回答
0

您想要的是使用您的数据构建有向图。节点将匹配地理点,边将匹配两点之间的操作

然后您继续查找所需的两个任意节点之间的所有路径。

这不是您可以仅通过数据库查询来解决的问题:您必须(可能不是一次,但最终)加载所有数据,以便构建完整的图表并提供完整的答案列表。

于 2013-01-17T19:52:12.037 回答