有一个表distances(city1, city2, dist)列出了几个城市以及它们之间的距离。要做的是,从该信息中我们可以得到更多的距离,就像表distances dist A-> B和dist B-> C中存在的那样,因此我们可以得到不在distances中的A->C。

任务是生成带有第一个表的传递性关闭的表distances_tr(city1, city2, dist),该表将包含(A, C, dist(A,C))

如何使用PROCEDURE和简单的SQL SELECT, INSERT, UPDATE命令达到目的?我知道可以递归完成,但是教授告诉我们两种方法都可以做到。

最佳答案

将表从一侧连接到city2的另一侧。这里的假设是,没有记录记录其中city1和city2的组合在其中两次被翻转的情况下出现。如果它们是,请包括一个过滤器以过滤出一侧的city1等于另一侧的city2的位置。

关于mysql - MySQL距离关系的可传递关闭,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33767105/

10-11 12:46