Asp.net SQL在double select中比较值
我有两个表,一个表中存储了公交线路,另一个表中存储了这些线路的其他站点。 所以我做了一个搜索选项,我试着只显示从起点到终点的巴士。 这是我的密码:Asp.net SQL在double select中比较值,asp.net,sql,Asp.net,Sql,我有两个表,一个表中存储了公交线路,另一个表中存储了这些线路的其他站点。 所以我做了一个搜索选项,我试着只显示从起点到终点的巴士。 这是我的密码: SELECT BusName FROM Buses WHERE BusID IN (SELECT BusID FROM Stations WHERE StationName = @StartingPoint AND BusID IN (SELECT BusID FROM Stations WHERE (StationName = @Destin
SELECT BusName FROM Buses
WHERE BusID IN
(SELECT BusID FROM Stations WHERE StationName = @StartingPoint AND BusID IN
(SELECT BusID FROM Stations WHERE (StationName = @Destination)))
问题是它显示从B点到A点的总线。
我有一个列StationNum,用于路由顺序,即A=10和B=255。那么,有什么简单的方法可以将第三次选择的StationNum与第一次选择的StationNum进行比较吗?您可以使用派生表并对它们进行连接,如下所示:
SELECT B.BusName
FROM Buses B INNER JOIN
(SELECT BusID, StationName FROM Stations WHERE StationName = @StartingPoint) BS ON B.BusID = BS.BusID INNER JOIN
(SELECT BusID, StationName FROM Stations WHERE (StationName = @Destination) BD ON B.BusID = BD.BusID
WHERE BS.StationName > BD.StationName
您现在可以引用起点的站名和目的地的站名,并在WHERE子句中进行比较。切换两个select子句如何?首先你要说的是站点名称=目的地,然后在第二个BusID in。。。您说的是站点名称=StartingPoint@Trickzter这不会改变任何事情。为了更好地解释我的问题,在A和B之间可能有C站和D站,知道路线的唯一方法是比较C站和D站的StationNum,如果C站的StationNum较小且等于起始点,则应选择它。