Pracuję nad projektem domowym i mam wykonać zapytanie do bazy danych, które wyszuka loty według nazwy miasta lub kodu lotniska, ale flightstabela zawiera tylko kody lotnisk, więc jeśli chcę szukać według miasta, muszę dołączyć do airportsstołu.
Tabela lotnisk zawiera następujące kolumny: code, city
Tabela lotów zawiera następujące kolumny: airline, flt_no, fairport, tairport, depart, arrive, fare
Kolumny fairporti tairportto kody lotnisk od i do .
Kolumny departi arrivesą datami wyjazdu i przyjazdu.
Wpadłem z zapytaniem, które najpierw łączy loty na fairportkolumnie i airports.codekolumnie. Aby dopasować połączenie, tairportmuszę wykonać inne złączenie na poprzednich meczach z pierwszego złączenia.
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 = '?')
Moje zapytanie zwraca prawidłowe wyniki i wystarczy do zadania domowego, ale zastanawiam się, czy mogę JOINw wielu kolumnach? Jak skonstruować WHEREklauzulę, aby pasowała do miejsca wylotu i miasta / kodu docelowego?
Poniżej znajduje się „pseudo-zapytanie” dotyczące tego, co chcę osiągnąć, ale nie mogę poprawnie uzyskać składni i nie wiem, jak przedstawić airportstabelę odlotów i miejsc docelowych:
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')
Aktualizacja
Zauważyłem również, że ta wizualna reprezentacja instrukcji SQL Join jest bardzo pomocna jako ogólny przewodnik dotyczący konstruowania instrukcji SQL!