Saya sedang mengerjakan proyek pekerjaan rumah dan saya seharusnya melakukan query database yang menemukan penerbangan baik dengan nama kota atau kode bandara, tetapi flights
tabel hanya berisi kode bandara jadi jika saya ingin mencari berdasarkan kota saya harus bergabunglah di atas airports
meja.
Tabel bandara memiliki kolom berikut: code, city
Tabel penerbangan memiliki kolom berikut: airline, flt_no, fairport, tairport, depart, arrive, fare
Kolom fairport
dan tairport
merupakan kode dari dan ke bandara.
Kolom depart
dan arrive
tanggal keberangkatan dan kedatangan.
Saya datang dengan pertanyaan yang pertama kali bergabung dengan penerbangan pada fairport
kolom dan airports.code
kolom. Agar saya dapat mencocokkan, tairport
saya 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 JOIN
di beberapa kolom? Bagaimana saya membuat WHERE
klausa 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 airports
tabel 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!