在mysql中使用3个表的内连接中的位置

时间:2017-02-08 16:29:43

标签: mysql database inner-join

我想获得一对车站之间特定日期的列车列表: 这些是我的表。

`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
    (Source.Station_id=@Source) AND  (Destination.Station_id=@Dest) )) AND 
        (Train_status.Available_Date = @Available_Date)

1 个答案:

答案 0 :(得分: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 Source.Station_id=@Source
INNER JOIN Route AS Destination ON Destination.Train_id=Train.Train_id and Destination.Station_id=@Dest