Row No Bus No Kilometer From To
1 10 100 Salem Trichy
2 11 150 Trichy Madurai
3 12 180 madurai Chennai
4 13 50 Salem coimbatore
5 14 200 coimbatore chennai
6 15 300 Salem Chennai
这是我的表格(样本值)。我需要找到Salem和Chennai之间的最短路线,例如公里(分钟)
Route 1 : Salem->Trichy,Trichy->Madurai,Madurai->Chennai Kilometer-430
Route 2: Salem->coimbatore,coimbatore->chennai kilometer -250
Route 3: Selam->Chennai kilometer -300
这里min是2号线 - 250公里。
请帮助构建查询。
答案 0 :(得分:2)
你必须使用递归,不确定你正在使用什么数据库,但是如果是SQL Server:
;WITH cte AS (SELECT *
,[From]+'>'+[To] AS Trip
,Kilometer AS Trip_Distance
FROM Table1
WHERE [From] = 'Salem'
UNION ALL
SELECT a.*
,Trip = b.Trip+'>'+a.[To]
,Trip_Distance = b.Trip_Distance + a.Kilometer
FROM Table1 a
JOIN cte b
ON a.[From] = b.[To]
)
SELECT Trip, Trip_Distance
FROM cte
WHERE [To] = 'Chennai'
ORDER BY Trip_Distance
演示:SQL Fiddle
注意:如果您的From
和To
不是VARCHAR(MAX)
,那么您必须处理使递归部分和锚点之间的长度匹配。
答案 1 :(得分:0)
这个简单的格式如下:
SELECT A.id,A.bus_no,B.from,B.to,B.via,B.km
FROM a A INNER JOIN b B ON A.r_id=B.r_id
ORDER BY a.id;
请注意: