-3

私はこのスキーマを持っています:

CREATE TABLE Airport (
  airportIATA CHAR(3) NOT NULL,
  name VARCHAR(45) NOT NULL, 
  PRIMARY KEY (airportIATA) 
  );

CREATE TABLE Flight (
  flightNumber VARCHAR(6) NOT NULL,
  timeOfDeparture TIME NOT NULL,
  departureAirport_IATA CHAR(3) NOT NULL REFERENCES Airport(airportIATA),
  stopOverAirport_IATA CHAR(3) REFERENCES Airport(airportIATA),
  arrivalAirport_IATA CHAR(3) NOT NULL REFERENCES Airport(airportIATA),
  PRIMARY KEY (flightNumber, departureAirport_IATA, arrivalAirport_IATA)
  );

これらの記録で:

INSERT INTO Airport VALUES ('HEL','Helsinki/Vantaa Airport');
INSERT INTO Airport VALUES ('STO','Stockholm Airport');
INSERT INTO Airport VALUES ('TAL', 'Lennart Meri Tallinn Airport');

INSERT INTO Flight VALUES ('AY101', '13:30', 'HEL', NULL, 'STO');
INSERT INTO Flight VALUES ('AA202', '16:15', 'STO', 'TAL', 'HEL');

これまでのところ、私はこれらのクエリを持っています:

SELECT flightNumber, timeOfDeparture, departureAirport_IATA, arrivalAirport_IATA
FROM Flight
WHERE stopOverAirport_IATA IS NULL;



SELECT flightNumber, timeOfDeparture, name AS 'Arrival Airport'
FROM Flight, Airport
WHERE Flight.stopOverAirport_IATA IS NULL AND Flight.arrivalAirport_IATA = Airport.airportIATA;

私の質問は、後者のクエリを変更して、到着空港と出発空港の両方の名前が含まれるようにするにはどうすればよいですか(最初のクエリでIATAコードを取得した場合)。

4

1 に答える 1

3

次のようなことを試してください:

SELECT
  flightNumber, 
  timeOfDeparture, 
  DA.name AS 'Departure Airport',
  AA.name AS 'Arrival Airport'
FROM
  Flight As F
  INNER JOIN Airport As DA
  ON F.departureAirport_IATA = DA.airportIATA
  INNER JOIN Airport As AA
  ON F.arrivalAirport_IATA = AA.airportIATA
WHERE 
  F.stopOverAirport_IATA IS NULL
;
于 2012-12-10T20:16:46.773 に答える