2017-02-08 16 views
1

私は駅のペアの間で特定の日付に利用可能な列車のリストを取得したい: これらは私のテーブルです。mysqlの3つのテーブルを内部結合する場所を使用する

`route` 
(
    `train_id`, 
    `Stop_number`, 
    `Station_id`, 
    `Arrival_time`, 
    `Departure_time`, 
    `Source_distance` 
) 

`train` 
(
    `Train_id`, 
    `Train_name`, 
    `Train_type`, 
    `Source_station`, 
    `Destination_Station`, 
    `Source_id`, 
    `Destination_id` 
) 


`train_status` 
(
    `Train_id`, 
    `Available_date`, 
    `Booked_seat`, 
    `Waiting_seat`, 
    `Available_seat` 
) 

私は鉄道予約システム用のmysqlデータベースを作成しています。 私はmysqlを初めて使っていますが、内部結合を使用してこのクエリを作成しようとしました。 この質問をしてください。

Select Route.Train_id, Train.Train_name, Train_status.Available_date 
    FROM Route INNER JOIN Train 
    ON Route.Train_id = Train.Train_id 
    INNER JOIN 
    Train_status ON Train.Train_id= Train_status.Train_id 
    WHERE  (Route.Station_id IN 
       (Select Source.Station_id 
        FROM Route AS Source INNER JOIN 
          Route AS Destination ON Source.Train_id= 
    Destination.Train_id WHERE  (Source.Stop_number-Destination.Stop_number<0)AND 
    ([email protected]) AND ([email protected]))) AND 
     (Train_status.Available_Date = @Available_Date) 

答えて

1

これはそれを試してみて、この作品かないなら、私に知らせて似ています。

Select Route.train_id, Train.Train_name, Train_status.Available_date 
FROM Train 
INNER JOIN Train_status ON Train.Train_id= Train_status.Train_id AND Train_status.Available_Date = @Available_Date 
INNER JOIN Route AS Source ON Source.Train_id=Train.Train_id and [email protected] 
INNER JOIN Route AS Destination ON Destination.Train_id=Train.Train_id and [email protected] 
+0

私は基本的な考え方に同意するが、そのクエリをリファクタリングしながら、あなたが – Kickstart

+1

FROM上句に余分を持っていますありがとう –

+0

それは次のようなエラーを出します: 'フィールドリスト'の 'Route.Train_id'が不明です – rockstar

関連する問題