2014-11-21 2 views
0

У меня следующие задачи:SQL create view with connect flight

Мне нужно создать представление, которое показывает 1-й полет и его стыковочный рейс.

В этом примере FlightNo 1 & 2.

-

Мой полет стол:

FlightNo---Date--------StartTime---ArrivingTime---StartPort---DestinationPort 

1. ----2014-11-20---01:00:55-----02:00:34----------a----------------b 
2. ----2014-11-20---02:10:55-----03:00:34----------b----------------c 
3. ----2014-11-20---20:00:55-----21:00:34----------x----------------q 
4. ----2014-11-20---00:00:55-----01:00:34----------a----------------u 

...

мой код до сих пор:

create OR REPLACE view FlightConnection as 

select* FROM Flight a 

where exists (select* FROM Flight b 
where a.StartPort = b.DestinationPort and 
a.ArrivingTime < b.StartTimet); 

Мой выход:

FlightNo---Date--------StartTime---ArrivingTime---StartPort---DestinationPort 

---1 ----2014-11-20---01:00:55-----02:00:34----------a----------------b 

-

Но мне нужно FlightNo 1 и 2. я попробовал несколько разные вещи, но я думаю, что я на мгновение немой.

Пожалуйста, помогите. (извините за мой английский)

+0

Так что вы хотите пары рейсов таким образом, что порт назначения из первого является начало порта второго, а время прибытия первого это до времени вылета второго? –

ответ

0

Чтобы получить строки результатов, содержащие данные обо всех рейсах возможного соединения, вам необходимо выполнить (self-) JOIN. Это поможет вам начать:

CREATE OR REPLACE VIEW FlightConnection AS 
    SELECT * 
    FROM Flight a 
    JOIN Flight b 
     ON a.DestinationPort = b.StartPort 
     AND a.Date = b.Date 
     AND a.ArrivingTime < b.StartTime 
+0

Возможно, вам захочется выбрать определенные столбцы и назначить им псевдонимы вместо того, чтобы просто выбрать '*'. –

+0

Да, somthing сейчас не работает mysql плачет о ошибке 1060 имя дубликата столбца FlightNo –

+0

Либо выберите определенные столбцы в списке выбора и назначьте им различные псевдонимы, либо поместите соответствующий список столбцов перед 'AS'. Или оба. –