Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net SQL在double select中比较值_Asp.net_Sql - Fatal编程技术网

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较小且等于起始点,则应选择它。