Tôi đang làm việc trong một dự án bài tập về nhà và tôi phải thực hiện một truy vấn cơ sở dữ liệu tìm thấy các chuyến bay theo tên thành phố hoặc mã sân bay, nhưng flightsbảng chỉ chứa mã sân bay nên nếu tôi muốn tìm kiếm theo thành phố, tôi phải tìm kiếm tham gia trên airportsbàn
Bảng sân bay có các cột sau: code, city
Bảng chuyến bay có các cột sau: airline, flt_no, fairport, tairport, depart, arrive, fare
Các cột fairportvà tairportlà từ và đến sân bay.
Các cột departvà arrivelà ngày khởi hành và đến.
Tôi đã đưa ra một truy vấn đầu tiên tham gia các chuyến bay trên fairportcột vàairports.code cột. Để tôi phù hợp với tairporttôi, tôi phải thực hiện một lần tham gia khác vào các trận đấu trước từ lần tham gia đầu tiên.
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 = '?')
Truy vấn của tôi trả về kết quả đúng và nó sẽ đủ cho mục đích của bài tập về nhà, nhưng tôi tự hỏi liệu tôi có thể JOIN trên nhiều cột không? Làm thế nào tôi có thể xây dựng WHEREmệnh đề sao cho phù hợp với điểm khởi hành và thành phố / mã đích?
Dưới đây là một "truy vấn giả" về những gì tôi muốn đạt được, nhưng tôi không thể nhận được cú pháp chính xác và tôi không biết làm thế nào để thể hiện airports bảng cho các lần khởi hành và đích đến:
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')
Cập nhật
Tôi cũng thấy hình ảnh đại diện này của SQL Tham gia báo cáo là rất hữu ích như một hướng dẫn chung về cách xây dựng câu lệnh SQL!