ฉันทำงานเกี่ยวกับการทำการบ้านและฉันควรจะทำการสืบค้นฐานข้อมูลซึ่งค้นหาเที่ยวบินไม่ว่าจะด้วยชื่อเมืองหรือรหัสสนามบิน แต่flightsตารางมีเพียงรหัสสนามบินเท่านั้นดังนั้นหากฉันต้องการค้นหาตามเมืองฉันต้อง เข้าร่วมบนairportsโต๊ะ
ตารางสนามบินมีคอลัมน์ต่อไปนี้: code, city
ตารางเที่ยวบินมีคอลัมน์ต่อไปนี้: airline, flt_no, fairport, tairport, depart, arrive, fare
คอลัมน์fairportและtairportเป็นรหัสจากและไปยังสนามบิน
คอลัมน์departและarriveเป็นวันที่ออกเดินทางและการมาถึง
ฉันมาพร้อมกับข้อความค้นหาซึ่งเข้าร่วมเที่ยวบินครั้งแรกในfairportคอลัมน์และairports.codeคอลัมน์ เพื่อให้ตรงกับที่tairportฉันต้องทำการเข้าร่วมอื่นในการแข่งขันก่อนหน้าจากการเข้าร่วมครั้งแรก
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 = '?')
ข้อความค้นหาของฉันส่งคืนผลลัพธ์ที่ถูกต้องและเพียงพอสำหรับการทำการบ้าน แต่ฉันสงสัยว่าฉันสามารถทำได้JOINหลายคอลัมน์หรือไม่ ฉันจะสร้างWHEREประโยคเพื่อให้ตรงกับการเดินทางและเมือง / รหัสปลายทางได้อย่างไร
ด้านล่างนี้เป็น "pseudo-query" เกี่ยวกับสิ่งที่ฉันต้องการให้บรรลุ แต่ฉันไม่สามารถรับไวยากรณ์ได้อย่างถูกต้องและฉันไม่รู้วิธีแสดงairportsตารางสำหรับขาออกและปลายทาง:
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')
ปรับปรุง
ฉันยังพบการแสดงภาพนี้ของ SQL เข้าร่วมกับงบที่จะมากประโยชน์เช่นคำแนะนำทั่วไปเกี่ยวกับวิธีการสร้างคำสั่ง SQL!