DROP TABLE IF EXISTS fight;
CREATE TABLE flight
(flightnr CHAR(5) NOT NULL PRIMARY KEY
,destination CHAR(3) NOT NULL
,start CHAR(3) NOT NULL
);
INSERT INTO flight VALUES
('LH100','ATL','FRA'),
('LH102','DXB','FRA'),
('LH103','ORD','FRA'),
('LH104','HND','FRA'),
('LH105','LHR','FRA'),
('LH106','LAX','FRA'),
('LH107','HKG','FRA'),
('LH108','CDG','FRA'),
('LH109','DFW','FRA'),
('LH110','IST','FRA'),
('LH200','ATL','LHR'),
('LH201','PEK','LHR'),
('LH202','DXB','LHR'),
('LH203','ORD','LHR'),
('LH204','FRA','LHR');
DROP TABLE IF EXISTS departure;
CREATE TABLE departure
(flightnr CHAR(5) NOT NULL
,date DATE NOT NULL
,sign CHAR(6) NOT NULL
,PRIMARY KEY(flightnr,date)
);
INSERT INTO departure VALUES
('LH100','2018-10-01','D-ABBL'),
('LH100','2018-10-02','D-ABBL'),
('LH100','2018-10-03','D-ABBL'),
('LH100','2018-10-04','D-ABBL'),
('LH100','2018-10-05','D-ABBL'),
('LH100','2018-10-06','D-ABBL'),
('LH100','2018-10-07','D-ABBK'),
('LH100','2018-10-08','D-ABBK'),
('LH102','2018-10-02','D-ABBB'),
('LH102','2018-10-04','D-ABBB'),
('LH102','2018-10-06','D-ABBB'),
('LH103','2018-10-09','D-ABBB'),
('LH104','2018-10-03','D-ABBB'),
('LH104','2018-10-05','D-ABBB'),
('LH104','2018-10-07','D-ABBB'),
('LH104','2018-10-09','D-ABBB'),
('LH105','2018-10-01','D-ABBB'),
('LH105','2018-10-02','D-ABBB'),
('LH105','2018-10-03','D-ABBB'),
('LH200','2018-10-01','D-ABCA'),
('LH200','2018-10-02','D-ABCA'),
('LH201','2018-10-03','D-ABCA'),
('LH201','2018-10-05','D-ABBR'),
('LH202','2018-10-05','D-ABCA'),
('LH202','2018-10-09','D-ABCA'),
('LH203','2018-10-04','D-ABCA'),
('LH203','2018-10-05','D-ABCA'),
('LH203','2018-10-06','D-ABCC'),
('LH204','2018-10-01','D-ABBF'),
('LH204','2018-10-03','D-ABBI'),
('LH204','2018-10-08','D-ABBM');
SELECT f1.flightnr
, f1.start
, d1.date startdate
, f2.flightnr transferflightnr
, f2.start transferlocation
, d2.date transferdate
, f2.destination
FROM flight f1
JOIN departure d1
ON d1.flightnr = f1.flightnr
JOIN flight f2
ON f2.start = f1.destination
JOIN departure d2
ON d2.flightnr = f2.flightnr
AND d2.date >= d1.date
WHERE f2.destination = 'pek'
AND f1.start = 'fra';
+----------+-------+------------+------------------+------------------+--------------+-------------+
| flightnr | start | startdate | transferflightnr | transferlocation | transferdate | destination |
+----------+-------+------------+------------------+------------------+--------------+-------------+
| LH105 | FRA | 2018-10-01 | LH201 | LHR | 2018-10-03 | PEK |
| LH105 | FRA | 2018-10-02 | LH201 | LHR | 2018-10-03 | PEK |
| LH105 | FRA | 2018-10-03 | LH201 | LHR | 2018-10-03 | PEK |
| LH105 | FRA | 2018-10-01 | LH201 | LHR | 2018-10-05 | PEK |
| LH105 | FRA | 2018-10-02 | LH201 | LHR | 2018-10-05 | PEK |
| LH105 | FRA | 2018-10-03 | LH201 | LHR | 2018-10-05 | PEK |
+----------+-------+------------+------------------+------------------+--------------+-------------+