Ben bir ev ödevi projesi üzerinde çalışıyorum ve şehir adı veya havaalanı kodu ile uçuşlar bulur bir veritabanı sorgusu gerçekleştirmek gerekiyordu, ancak flightstablo sadece havaalanı kodlarını içerir, bu yüzden şehre göre arama yapmak istiyorum eğer airportsmasaya katılmak .
Havaalanları tabloda aşağıdaki sütunlar bulunmaktadır: code, city
uçuşlar tabloda aşağıdaki sütunlar bulunmaktadır: airline, flt_no, fairport, tairport, depart, arrive, fare
sütunlar fairportve tairportvardır den ve karşı havalimanı kodları.
Sütunlar departve arrivekalkış ve varış tarihleri.
Ben ilk fairportsütun ve sütun uçuşlar katılır bir sorgu geldi airports.code. Eşleşebilmem için tairportilk maçtan önceki maçlarda başka bir katılım gerçekleştirmem gerekiyor.
SELECT airline, flt_no, fairport, tairport, depart, arrive, fare
FROM (SELECT * FROM flights
INNER JOIN airports
ON flights.fairport = airports.code
WHERE (airports.code = '?' OR airports.city='?')) AS matches
INNER JOIN airports
ON matches.tairport = airports.code
WHERE (airports.code = '?' OR airports.city = '?')
Benim sorgu uygun sonuçları döndürür ve ödev amacıyla yeterli olacaktır, ama ben JOINbirden çok sütun üzerinde olup olmadığını merak ediyorum ? WHEREMaddeyi kalkış ve varış şehiriyle / koduyla eşleşecek şekilde nasıl oluşturabilirim ?
Aşağıda ne elde etmek istiyorum üzerinde bir "sözde sorgu", ancak sözdizimini doğru şekilde alamıyorum airportsve gidiş ve hedefler için tablo temsil nasıl bilmiyorum :
SELECT * FROM flights
INNER JOIN airports
ON flights.fairport = airports.code AND flights.tairport = airports.code
WHERE (airports.code = 'departureCode' OR airports.city= 'departureCity')
AND (airports.code = 'destinationCode' OR airports.city = 'destinationCity')
Güncelleme
Ayrıca SQL deyimleri bu görsel gösterimi SQL deyimleri oluşturma hakkında genel bir kılavuz olarak çok yararlı buldum !