Bir tablo, iki rol
Bir rotanın hem kalkışı hem varışı hv_airports tablosuna bağlanır. Aynı tabloyu iki farklı takma adla birleştirirsin: biri kalkış, biri varış rolünde.
SELECT r.route_id, k.city AS kalkis, v.city AS varis, r.distance_km FROM hv_routes r JOIN hv_airports k ON k.airport_code = r.origin JOIN hv_airports v ON v.airport_code = r.dest ORDER BY r.distance_km DESC LIMIT 5;
Aktarma: iki uçuşu eşleştirmek
Bir yolcu Van'dan İstanbul'a inip aynı gün yurt dışına devam edebilir mi? İlk uçuşun varış havalimanı ikincinin kalkışı olmalı ve arada makul bir bekleme süresi olmalıdır. Bu, hv_flights'ın kendisiyle birleştirilmesidir:
SELECT f1.flight_no AS ilk, f2.flight_no AS ikinci, r2.dest AS son_varis,
ROUND((julianday(f2.sched_dep) - julianday(f1.sched_arr)) * 1440) AS bekleme_dk
FROM hv_flights f1
JOIN hv_routes r1 ON r1.route_id = f1.route_id
JOIN hv_routes r2 ON r2.origin = r1.dest
JOIN hv_flights f2 ON f2.route_id = r2.route_id
WHERE r1.origin = 'VAN' AND r1.dest = 'IST'
AND f1.sched_dep >= '2024-12-20' AND f1.sched_dep < '2024-12-21'
AND f2.sched_dep >= f1.sched_arr
AND f2.sched_dep < '2024-12-21'
ORDER BY bekleme_dk
LIMIT 5;
Eşleşme patlamasıKendine birleştirmede koşulları dar tutmazsan (aynı gün, belirli havalimanı) sonuç uçuş sayısının karesi kadar büyüyebilir. Önce filtrele, sonra birleştir.