我有随附的mysql数据库的火车,火车时刻表,列车车次。
现在我想查询两个车站之间的列车,比如Jaipur到Jodhpur,所以我像这样查询
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'
它给出了正确的结果,但它显示了从焦特布尔到济浦尔的列车和从济浦尔到焦特布尔的列车,所以结果变成了列车的两倍。
我只想问一下从Jaipur到Jodhpur的火车,不想问Jodhpur到Jaipur的火车。如果我选择date,那么必须从列车数据库中找到匹配的列车。
发布于 2013-04-12 17:34:00
您查询的不是trains表,而是列车时刻表,这意味着查询不会给出2个列车,而是给出2个列车时刻表。
我将从trains表中开始选择,如下所示:
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代码)
发布于 2013-04-12 17:46:27
确保联接不同的记录:
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'
;
否则,您的结果集将填充不需要的身份匹配(表示从一个车站到其本身的虚构的火车区段)。
https://stackoverflow.com/questions/15977094
复制相似问题