2

列車、列車の時刻表、列車番号の mysql のデータベースが接続されています。

今、ジャイプールからジョードプルのような 2 つの駅間の列車をクエリしたいので、このようにクエリしました

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 倍になります。

ジョードプルからジャイプールへの列車ではなく、ジャイプールからジョードプルへの列車のみを照会したい. 日付を選択した場合、一致する列車を列車データベースから見つける必要があります。

4

2 に答える 2

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'
         ;

そうしないと、結果セットに不要な ID 一致 (ある駅からその駅までの架空の列車区間を表す) が入力されます。

于 2013-04-12T17:46:26.613 に答える