SELECT f.flight_no,
f.scheduled_departure,
f.flight_id,
f.departure_airport,
f.arrival_airport,
f.aircraft_code,
t.passenger_name,
tf.fare_conditions AS fc_to_be,
s.fare_conditions AS fc_fact,
b.seat_no
FROM boarding_passes b
JOIN ticket_flights tf
ON b.ticket_no = tf.ticket_no AND b.flight_id = tf.flight_id
JOIN tickets t ON tf.ticket_no = t.ticket_no
JOIN flights f ON tf.flight_id = f.flight_id
JOIN seats s
ON b.seat_no = s.seat_no AND f.aircraft_code = s.aircraft_code
WHERE tf.fare_conditions <> s.fare_conditions
ORDER BY f.flight_no, f.scheduled_departure;
Чтобы все же удостовериться в работоспособности этого запроса, можно в таблице
boarding_passes изменить в одной строке номер места таким образом, чтобы этот
пассажир переместился из салона экономического класса в салон бизнес-класса.
UPDATE boarding_passes
SET seat_no = '1A'
WHERE flight_id = 1 AND seat_no = '17A';
UPDATE 1
Выполним запрос еще раз, и теперь он выдаст одну строку.
В предложении FROM можно использовать виртуальные таблицы, сформированные
с помощью ключевого слова VALUES. Предположим, что для выработки финансовой
стратегии нашей авиакомпании требуется распределение количества бронирований
по диапазонам сумм с шагом в 100 тысяч рублей. Максимальная сумма в одном бро-
нировании составляет 1 204 500 рублей. Учтем это при формировании диапазонов.
Виртуальной таблице, создаваемой с помощью ключевого слова VALUES, присваива-
ют имя с помощью ключевого слова AS. После имени в круглых скобках приводится
список имен столбцов этой таблицы.
164
6.2. Соединения
SELECT r.min_sum, r.max_sum, count( b.* )
Достарыңызбен бөлісу: |