有一个表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/