Je travaille sur un projet de devoirs et je suis censé effectuer une requête de base de données qui trouve les vols soit par le nom de la ville, soit par le code de l'aéroport, mais la flightstable ne contient que les codes d'aéroport donc si je veux rechercher par ville, je dois rejoindre sur la airportstable.
Le tableau des aéroports comprend les colonnes suivantes: code, city
Le tableau des vols comprend les colonnes suivantes: airline, flt_no, fairport, tairport, depart, arrive, fare
Les colonnes fairportet tairportsont les codes d'aéroport de départ et d' arrivée.
Les colonnes departet arrivesont les dates de départ et d'arrivée.
Je suis venu avec une requête qui joint d'abord les vols sur la fairportcolonne et la airports.codecolonne. Pour que je corresponde au, tairportje dois effectuer une autre jointure sur les matchs précédents de la première jointure.
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 = '?')
Ma requête renvoie les bons résultats et cela suffira pour les devoirs, mais je me demande si je peux JOINsur plusieurs colonnes? Comment pourrais-je construire la WHEREclause pour qu'elle corresponde au départ et à la ville / code de destination?
Ci-dessous, une "pseudo-requête" sur ce que je veux réaliser, mais je ne parviens pas à obtenir la syntaxe correctement et je ne sais pas comment représenter le airportstableau des départs et des destinations:
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')
Mettre à jour
J'ai également trouvé que cette représentation visuelle des instructions SQL Join était très utile en tant que guide général sur la construction d'instructions SQL!