Sto lavorando a un progetto di compiti a casa e dovrei eseguire una query del database che trova i voli in base al nome della città o al codice dell'aeroporto, ma la flights
tabella contiene solo i codici dell'aeroporto, quindi se voglio cercare per città devo unisciti al airports
tavolo.
La tabella degli aeroporti ha le seguenti colonne: code, city
La tabella dei voli ha le seguenti colonne: airline, flt_no, fairport, tairport, depart, arrive, fare
Le colonne fairport
e tairport
sono i codici da e per aeroporto.
Le colonne depart
e arrive
sono le date di partenza e di arrivo.
Ho trovato una domanda che prima unisce i voli sulla fairport
colonna e sulla airports.code
colonna. Affinché io possa abbinare il tairport
devo eseguire un altro join sulle partite precedenti dal primo join.
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 = '?')
La mia query restituisce i risultati corretti e sarà sufficiente ai fini dei compiti, ma mi chiedo se posso JOIN
su più colonne? Come costruirò la WHERE
clausola in modo che corrisponda alla partenza e alla città / codice di destinazione?
Di seguito è una "pseudo-query" su ciò che voglio raggiungere, ma non riesco a ottenere correttamente la sintassi e non so come rappresentare la airports
tabella per le partenze e le destinazioni:
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')
Aggiornare
Ho trovato anche questa rappresentazione visiva di SQL Iscriviti dichiarazioni di essere molto utile come guida generale su come costruire istruzioni SQL!