Saya sedang mengerjakan proyek pekerjaan rumah dan saya seharusnya melakukan query database yang menemukan penerbangan baik dengan nama kota atau kode bandara, tetapi flightstabel hanya berisi kode bandara jadi jika saya ingin mencari berdasarkan kota saya harus bergabunglah di atas airportsmeja.
Tabel bandara memiliki kolom berikut: code, city
Tabel penerbangan memiliki kolom berikut: airline, flt_no, fairport, tairport, depart, arrive, fare
Kolom fairportdan tairportmerupakan kode dari dan ke bandara.
Kolom departdan arrivetanggal keberangkatan dan kedatangan.
Saya datang dengan pertanyaan yang pertama kali bergabung dengan penerbangan pada fairportkolom dan airports.codekolom. Agar saya dapat mencocokkan, tairportsaya harus melakukan join lain pada pertandingan sebelumnya dari join pertama.
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 = '?')
Permintaan saya mengembalikan hasil yang tepat dan itu sudah cukup untuk keperluan pekerjaan rumah, tapi saya bertanya-tanya apakah saya bisa JOINdi beberapa kolom? Bagaimana saya membuat WHEREklausa sehingga cocok dengan keberangkatan dan kota / kode tujuan?
Di bawah ini adalah "permintaan semu" tentang apa yang ingin saya capai, tetapi saya tidak bisa mendapatkan sintaks dengan benar dan saya tidak tahu bagaimana cara mewakili airportstabel untuk keberangkatan dan tujuan:
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')
Memperbarui
Saya juga menemukan representasi visual ini SQL Gabung pernyataan untuk menjadi sangat membantu sebagai panduan umum tentang bagaimana membangun pernyataan SQL!