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 flightstabella contiene solo i codici dell'aeroporto, quindi se voglio cercare per città devo unisciti al airportstavolo.
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 fairporte tairportsono i codici da e per aeroporto.
Le colonne departe arrivesono le date di partenza e di arrivo.
Ho trovato una domanda che prima unisce i voli sulla fairportcolonna e sulla airports.codecolonna. Affinché io possa abbinare il tairportdevo 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 JOINsu più colonne? Come costruirò la WHEREclausola 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 airportstabella 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!