ฉันทำงานเกี่ยวกับการทำการบ้านและฉันควรจะทำการสืบค้นฐานข้อมูลซึ่งค้นหาเที่ยวบินไม่ว่าจะด้วยชื่อเมืองหรือรหัสสนามบิน แต่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!