印度铁路数据库错误连接站之间的火车

时间:2013-04-12 17:07:20

标签: mysql database

我有火车数据库,火车时刻表,列车编号。

现在我想查询斋浦尔到焦特布尔两个车站之间的火车,所以我这样查询

SELECT distinct d1.train_no
FROM   train_schedule d1
INNER JOIN train_schedule d2 ON d2.train_no=d1.train_no
WHERE d1.stn_code = 'JU' and d2.stn_code = 'JP'

它给出了正确的结果,但它显示焦特布尔到斋浦尔和斋浦尔到焦特布尔列车,所以结果变成了火车的两倍。

我想查询从斋浦尔到焦特布尔而不是焦特布尔到斋浦尔的火车。如果我选择日期,则必须从列车数据库中找到匹配的列车。

2 个答案:

答案 0 :(得分:1)

你不是在查询火车表,而是火车时刻表,这意味着查询没有给你2列火车,它给你2个火车时刻表。

我从火车表开始选择SELECT,如下:

SELECT trains.train_number, count(*) as "Number of schedules"
FROM trains
INNER JOIN train_schedule a USING (train_number) WHERE train_schedule.station_code = 'JU'
INNER JOIN train_schedule b USING (train_number) WHERE train_schedule.station_code = 'JP'

(伪MySQL代码)

答案 1 :(得分:1)

确保您加入不同的记录:

    SELECT distinct d1.train_no
      FROM train_schedule d1
INNER JOIN train_schedule d2 ON (     d2.train_no =  d1.train_no
                                  AND d2.stn_code <> d1.stn_code )
     WHERE d1.stn_code = 'JU'
       AND d2.stn_code = 'JP'
         ;

否则您的结果集将填充不需要的身份匹配(表示从一个站到自身的虚构火车部分)。