Estoy trabajando en un proyecto de tarea y se supone que debo realizar una consulta en la base de datos que encuentre vuelos, ya sea por el nombre de la ciudad o el código del aeropuerto, pero la flights
tabla solo contiene los códigos del aeropuerto, así que si quiero buscar por ciudad, tengo que únete en la airports
mesa.
La tabla de aeropuertos tiene las siguientes columnas: code, city
la mesa de vuelos tiene las siguientes columnas: airline, flt_no, fairport, tairport, depart, arrive, fare
Las columnas fairport
y tairport
son los de y a códigos de aeropuertos.
Las columnas depart
y arrive
son las fechas de salida y llegada.
Se me ocurrió una consulta que primero une los vuelos en la fairport
columna y la airports.code
columna. Para que coincida tairport
, tengo que realizar otra unión en las coincidencias anteriores desde la primera unión.
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 = '?')
Mi consulta devuelve los resultados adecuados y será suficiente para la tarea, pero me pregunto si puedo JOIN
en varias columnas. ¿Cómo construiría la WHERE
cláusula para que coincida con la ciudad / código de salida y de destino?
A continuación se muestra una "pseudoconsulta" sobre lo que quiero lograr, pero no puedo obtener la sintaxis correctamente y no sé cómo representar la airports
tabla para las salidas y los destinos:
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')
Actualizar
¡También encontré que esta representación visual de las instrucciones SQL Join es muy útil como guía general sobre cómo construir instrucciones SQL!