加入 SQLite 获取想要的记录
Joining in SQLite to get desired records
我正在开发一个需要两个输入的移动应用程序 - 源站名称和目标站名称。收到这两个输入后,应用程序将征集可用于给定车站的列车名称及其 source_arrival 和 destination_reach 时间。
(注意:目前,我只关注在印度西孟加拉邦运营的无保留本地火车)
我正在使用 SQLite 作为 RDBMS。我有以下三个表格作为数据来源 -
train_table(其中包含可用列车的详细信息):
station_table(其中包含车站的详细信息):
route_table(包含路线详情):
现在,我的目标是按照之前指定的以下方式生成输出(假设我给 Baruipur Jn 作为源,Sealdah作为目的地):
我无法找出为此所需的查询。最初,我正在尝试以下操作:
select r1.trainId, r1.arrival as SrcArrive, r2.arrival
as Reach from route_table r1 cross join route_table r2
where r1.trainId = r2.trainId and r1.stationId <> r2.stationId and
r1.arrival <> r2.arrival;
(是的,没有 trainName)
但我无法减少意外的 source_arrival 时间。但是,我能够通过以下方式检索给定两个车站可用的不同火车的数量:
select _id, trainNO, trainName from train_table where _id in
(select trainId from route_table where stationId = 109
INTERSECT
select trainId from route_table where stationId = 21);
但是有了这个,我无法得到我需要的最终结果。
这可能有效,请尝试一次。
select routeData.*, train_table.* from (select r1.trainId, r1.arrival as SrcArrive, r2.arrival
as Reach from route_table r1 cross join route_table r2
where r1.trainId = r2.trainId and r1.stationId <> r2.stationId and
r1.arrival <> r2.arrival) routeData inner join train_table on routeData.trainId=train_table._id;
我已经重新定义了路线 table 的选择,试试这个更新的:
select trainName, SrcArrival, Destination from (select trainData.trainName, route.* from
(select A.trainId, A.arrival as SrcArrival, B.trainId, B.arrival as Destination from
route_table A inner join route_table B on A.trainId=B.trainId where A.stationId=109 and
B.stationId=259 and A.arrival<B.arrival) route inner join train_table trainData on
route.trainId=trainData._id) order by SrcArrival, Destination;
我正在开发一个需要两个输入的移动应用程序 - 源站名称和目标站名称。收到这两个输入后,应用程序将征集可用于给定车站的列车名称及其 source_arrival 和 destination_reach 时间。
(注意:目前,我只关注在印度西孟加拉邦运营的无保留本地火车)
我正在使用 SQLite 作为 RDBMS。我有以下三个表格作为数据来源 -
train_table(其中包含可用列车的详细信息):
station_table(其中包含车站的详细信息):
route_table(包含路线详情):
现在,我的目标是按照之前指定的以下方式生成输出(假设我给 Baruipur Jn 作为源,Sealdah作为目的地):
我无法找出为此所需的查询。最初,我正在尝试以下操作:
select r1.trainId, r1.arrival as SrcArrive, r2.arrival
as Reach from route_table r1 cross join route_table r2
where r1.trainId = r2.trainId and r1.stationId <> r2.stationId and
r1.arrival <> r2.arrival;
(是的,没有 trainName)
但我无法减少意外的 source_arrival 时间。但是,我能够通过以下方式检索给定两个车站可用的不同火车的数量:
select _id, trainNO, trainName from train_table where _id in
(select trainId from route_table where stationId = 109
INTERSECT
select trainId from route_table where stationId = 21);
但是有了这个,我无法得到我需要的最终结果。
这可能有效,请尝试一次。
select routeData.*, train_table.* from (select r1.trainId, r1.arrival as SrcArrive, r2.arrival
as Reach from route_table r1 cross join route_table r2
where r1.trainId = r2.trainId and r1.stationId <> r2.stationId and
r1.arrival <> r2.arrival) routeData inner join train_table on routeData.trainId=train_table._id;
我已经重新定义了路线 table 的选择,试试这个更新的:
select trainName, SrcArrival, Destination from (select trainData.trainName, route.* from
(select A.trainId, A.arrival as SrcArrival, B.trainId, B.arrival as Destination from
route_table A inner join route_table B on A.trainId=B.trainId where A.stationId=109 and
B.stationId=259 and A.arrival<B.arrival) route inner join train_table trainData on
route.trainId=trainData._id) order by SrcArrival, Destination;