Я працюю над проектом домашнього завдання, і я повинен виконувати запит до бази даних, який знаходить рейси або за назвою міста, або з кодом аеропорту, але 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застереження так, щоб воно відповідало відправленням та місту / коду призначення?
Нижче наводиться "псевдо-запит" про те, що я хочу отримати, але я не можу правильно зрозуміти синтаксис, і я не знаю, як представити 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 Join є дуже корисним як загальне керівництво щодо побудови операторів SQL!