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 flights
tablo sadece havaalanı kodlarını içerir, bu yüzden şehre göre arama yapmak istiyorum eğer airports
masaya 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 fairport
ve tairport
vardır den ve karşı havalimanı kodları.
Sütunlar depart
ve arrive
kalkış ve varış tarihleri.
Ben ilk fairport
sütun ve sütun uçuşlar katılır bir sorgu geldi airports.code
. Eşleşebilmem için tairport
ilk 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 JOIN
birden çok sütun üzerinde olup olmadığını merak ediyorum ? WHERE
Maddeyi 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 airports
ve 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 !