Pracuję nad projektem domowym i mam wykonać zapytanie do bazy danych, które wyszuka loty według nazwy miasta lub kodu lotniska, ale flights
tabela zawiera tylko kody lotnisk, więc jeśli chcę szukać według miasta, muszę dołączyć do airports
stoł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 fairport
i tairport
to kody lotnisk od i do .
Kolumny depart
i arrive
są datami wyjazdu i przyjazdu.
Wpadłem z zapytaniem, które najpierw łączy loty na fairport
kolumnie i airports.code
kolumnie. Aby dopasować połączenie, tairport
muszę 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ę JOIN
w wielu kolumnach? Jak skonstruować WHERE
klauzulę, 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ć airports
tabelę 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!