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!
Jawaban:
Anda bisa BERGABUNG dengan tabel yang sama lebih dari satu kali dengan memberikan tabel gabungan alias , seperti dalam contoh berikut:
Perhatikan bahwa
to_port
danfrom_port
merupakan alias untuk salinanairports
tabel pertama dan kedua .sumber
flights f INNER JOIN airports a ON a.code = f.fairport OR a.code = f.tairport
Tolong sarankan.sesuatu seperti....
sumber
flights f INNER JOIN airports a ON a.code = f.fairport OR a.code = f.tairport
Apakah ada bedanya? Bagaimana menurut anda?jika mysql tidak apa-apa untuk Anda:
edit: menambahkan contoh untuk memfilter output untuk kode atau kota
sumber
Bisakah Anda menggunakan dan dalam klausa on?
Misalnya, sesuatu seperti:
sumber
Jika Anda ingin mencari di bandara FROM dan TO, Anda harus bergabung di tabel Bandara dua kali - maka Anda dapat menggunakan tabel dari dan ke dalam hasil yang Anda tentukan:
sumber