K.5. ÐÑполÑзование
K.5.1. СÑ
ема bookings
СÑ
ема bookings ÑодеÑÐ¶Ð¸Ñ Ð²Ñе обÑекÑÑ Ð´ÐµÐ¼Ð¾Ð½ÑÑÑаÑионной базÑ. ÐÑи подклÑÑении к базе паÑамеÑÑ ÐºÐ¾Ð½ÑигÑÑаÑии search_path авÑомаÑиÑеÑки пÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ Ð·Ð½Ð°Ñение bookings, public, Ñак ÑÑо ÑказÑваÑÑ Ð¸Ð¼Ñ ÑÑ
ÐµÐ¼Ñ Ñвно необÑзаÑелÑно.
Ðднако Ð´Ð»Ñ ÑÑнкÑии bookings.now в лÑбом ÑлÑÑае необÑ
одимо Ñвно ÑказÑваÑÑ ÑÑ
емÑ, ÑÑÐ¾Ð±Ñ Ð¾ÑлиÑаÑÑ ÐµÑ Ð¾Ñ ÑÑандаÑÑной ÑÑнкÑии now.
K.5.2. ÐеÑеводÑ
Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ ÑазлиÑнÑÑ
пеÑеводимÑÑ
полей вÑдаÑÑÑÑ Ð½Ð° ÑÑÑÑком ÑзÑке. ÐÑо Ð¿Ð¾Ð»Ñ airport_name и city пÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ airports, а Ñакже поле model пÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ aircrafts.
ÐÑ Ð¼Ð¾Ð¶ÐµÑе вÑбÑаÑÑ Ð´ÑÑгой ÑзÑк Ð´Ð»Ñ Ð¾ÑобÑÐ°Ð¶ÐµÐ½Ð¸Ñ ÑÑиÑ
полей (Ñ
оÑÑ Ð² данной базе пÑедÑÑавлен ÑолÑко английÑкий пеÑевод). ÐапÑимеÑ, Ð´Ð»Ñ Ð¿ÐµÑеклÑÑÐµÐ½Ð¸Ñ Ð½Ð° английÑкий ÑÑÑановиÑе Ð´Ð»Ñ Ð¿Ð°ÑамеÑÑа bookings.lang знаÑение en. Также Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ñдобно вÑбÑаÑÑ ÑзÑк на ÑÑовне Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
:
ALTER DATABASE demo SET bookings.lang = en;
ЧÑÐ¾Ð±Ñ ÑÑо изменение вÑÑÑпило в ÑилÑ, Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ пеÑеподклÑÑиÑÑÑÑ Ðº базе даннÑÑ . ÐÑÑгие ваÑианÑÑ ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð°ÑамеÑÑов конÑигÑÑаÑии опиÑÐ°Ð½Ñ Ð² Разделе 18.1.
Ð ÑледÑÑÑÐ¸Ñ Ð¿ÑимеÑÐ°Ñ Ð´Ð»Ñ Ð¿ÐµÑеводимÑÑ Ð¿Ð¾Ð»ÐµÐ¹ вÑбÑан ÑÑÑÑкий ÑзÑк.
K.5.3. ÐÑимеÑÑ Ð·Ð°Ð¿ÑоÑов
ЧÑÐ¾Ð±Ñ Ð»ÑÑÑе познакомиÑÑÑÑ Ñ ÑодеÑжимÑм демонÑÑÑаÑионной Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ , поÑмоÑÑим на ÑезÑлÑÑаÑÑ Ð½ÐµÑколÑÐºÐ¸Ñ Ð¿ÑоÑÑÑÑ Ð·Ð°Ð¿ÑоÑов.
РезÑлÑÑаÑÑ, пÑедÑÑавленнÑе ниже, бÑли полÑÑÐµÐ½Ñ Ð´Ð»Ñ Ð²ÐµÑÑии Ñ Ð½ÐµÐ±Ð¾Ð»ÑÑой базой даннÑÑ
(demo-small) Ð¾Ñ 15 авгÑÑÑа 2017 г. ÐÑли в ваÑей ÑиÑÑеме запÑоÑÑ Ð²ÑдаÑÑ Ð´ÑÑгие даннÑе, пÑовеÑÑÑе веÑÑÐ¸Ñ Ð´ÐµÐ¼Ð¾Ð½ÑÑÑаÑионной Ð±Ð°Ð·Ñ (ÑÑнкÑÐ¸Ñ bookings.now). ÐезнаÑиÑелÑнÑе оÑÐºÐ»Ð¾Ð½ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð³ÑÑ Ð±ÑÑÑ ÑвÑÐ·Ð°Ð½Ñ Ñ Ð¼ÐµÑÑнÑм вÑеменем, оÑлиÑнÑм Ð¾Ñ Ð¼Ð¾ÑковÑкого, и наÑÑÑойками локализаÑии.
ÐÑе ÑейÑÑ Ð²ÑполнÑÑÑÑÑ Ð½ÐµÑколÑкими Ñипами ÑамолеÑов:
SELECT * FROM aircrafts;
aircraft_code | model | range
---------------+---------------------+-------
773 | Boeing 777-300 | 11100
763 | Boeing 767-300 | 7900
SU9 | Sukhoi SuperJet-100 | 3000
320 | Airbus A320-200 | 5700
321 | Airbus A321-200 | 5600
319 | Airbus A319-100 | 6700
733 | Boeing 737-300 | 4200
CN1 | Cessna 208 Caravan | 1200
CR2 | Bombardier CRJ-200 | 2700
(9 ÑÑÑок)
ÐÐ»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ Ñипа ÑамолеÑа поддеÑживаеÑÑÑ ÑпиÑок меÑÑ Ð² Ñалоне. ÐапÑимеÑ, Ð²Ð¾Ñ Ð³Ð´Ðµ можно ÑазмеÑÑиÑÑÑÑ Ð² неболÑÑом ÑамолеÑе Cessna 208 Caravan:
SELECT a.aircraft_code,
a.model,
s.seat_no,
s.fare_conditions
FROM aircrafts a
JOIN seats s ON a.aircraft_code = s.aircraft_code
WHERE a.model = 'Cessna 208 Caravan'
ORDER BY s.seat_no;
aircraft_code | model | seat_no | fare_conditions
---------------+--------------------+---------+-----------------
CN1 | Cessna 208 Caravan | 1A | Economy
CN1 | Cessna 208 Caravan | 1B | Economy
CN1 | Cessna 208 Caravan | 2A | Economy
CN1 | Cessna 208 Caravan | 2B | Economy
CN1 | Cessna 208 Caravan | 3A | Economy
CN1 | Cessna 208 Caravan | 3B | Economy
CN1 | Cessna 208 Caravan | 4A | Economy
CN1 | Cessna 208 Caravan | 4B | Economy
CN1 | Cessna 208 Caravan | 5A | Economy
CN1 | Cessna 208 Caravan | 5B | Economy
CN1 | Cessna 208 Caravan | 6A | Economy
CN1 | Cessna 208 Caravan | 6B | Economy
(12 ÑÑÑок)
СамолеÑÑ Ð±Ð¾Ð»ÑÑего ÑазмеÑа имеÑÑ Ð±Ð¾Ð»ÑÑе поÑадоÑнÑÑ Ð¼ÐµÑÑ Ñ ÑазнÑми клаÑÑами обÑлÑживаниÑ:
SELECT s2.aircraft_code,
string_agg (s2.fare_conditions || '(' || s2.num::text || ')',
', ') as fare_conditions
FROM (
SELECT s.aircraft_code, s.fare_conditions, count(*) as num
FROM seats s
GROUP BY s.aircraft_code, s.fare_conditions
ORDER BY s.aircraft_code, s.fare_conditions
) s2
GROUP BY s2.aircraft_code
ORDER BY s2.aircraft_code;
aircraft_code | fare_conditions
---------------+-----------------------------------------
319 | Business(20), Economy(96)
320 | Business(20), Economy(120)
321 | Business(28), Economy(142)
733 | Business(12), Economy(118)
763 | Business(30), Economy(192)
773 | Business(30), Comfort(48), Economy(324)
CN1 | Economy(12)
CR2 | Economy(50)
SU9 | Business(12), Economy(85)
(9 ÑÑÑок)
Ðаза даннÑÑ ÑодеÑÐ¶Ð¸Ñ ÑпиÑок аÑÑопоÑÑов пÑакÑиÑеÑки вÑÐµÑ ÐºÑÑпнÑÑ Ð³Ð¾Ñодов РоÑÑии. РболÑÑинÑÑве гоÑодов еÑÑÑ ÑолÑко один аÑÑопоÑÑ. ÐÑклÑÑение ÑоÑÑавлÑÑÑ:
SELECT a.airport_code as code,
a.airport_name,
a.city,
a.coordinates
FROM airports a
WHERE a.city IN (
SELECT aa.city
FROM airports aa
GROUP BY aa.city
HAVING COUNT(*) > 1
)
ORDER BY a.city, a.airport_code;
code | airport_name | city | coordinates
------+------------------------------------+-----------+-------------------------
DME | Ðомодедово | ÐоÑква | (37.9062995910645,55.4087982177734)
SVO | ШеÑемеÑÑево | ÐоÑква | (37.4146,55.972599)
VKO | ÐнÑково | ÐоÑква | (37.2615013123,55.5914993286)
ULV | ÐаÑаÑаевка | УлÑÑновÑк | (48.2266998291,54.2682991028)
ULY | УлÑÑновÑк-ÐоÑÑоÑнÑй | УлÑÑновÑк | (48.8027000427246,54.4010009765625)
(5 ÑÑÑок)
ЧÑÐ¾Ð±Ñ Ð¿Ð¾Ð½ÑÑÑ, оÑкÑда и кÑда можно ÑлеÑеÑÑ, Ñдобно иÑполÑзоваÑÑ Ð¼Ð°ÑеÑиализованное пÑедÑÑавление routes, в коÑоÑом агÑегиÑÑеÑÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ вÑеÑ
ÑейÑаÑ
. ÐоÑ, напÑимеÑ, кÑда, в какие дни недели и за какое вÑÐµÐ¼Ñ Ð¼Ð¾Ð¶Ð½Ð¾ долеÑеÑÑ Ð¸Ð· ÐолгогÑада:
SELECT r.arrival_city as city,
r.arrival_airport as code,
r.arrival_airport_name as airport_name,
r.days_of_week,
r.duration
FROM routes r
WHERE r.departure_city = 'ÐолгогÑад';
city | code | airport_name | days_of_week | duration
----------------+------+------------------------------------+-----------------+----------
ÐоÑква | SVO | ШеÑемеÑÑево | {1,2,3,4,5,6,7} | 01:15:00
ЧелÑбинÑк | CEK | ЧелÑбинÑк | {1,2,3,4,5,6,7} | 01:50:00
РоÑÑов-на-ÐÐ¾Ð½Ñ | ROV | РоÑÑов-на-ÐÐ¾Ð½Ñ | {1,2,3,4,5,6,7} | 00:30:00
ÐоÑква | VKO | ÐнÑково | {1,2,3,4,5,6,7} | 01:10:00
ЧебокÑаÑÑ | CSY | ЧебокÑаÑÑ | {1,2,3,4,5,6,7} | 02:45:00
ТомÑк | TOF | ÐогаÑÑво | {1} | 03:50:00
(6 ÑÑÑок)
Ðаза даннÑÑ
бÑла ÑÑоÑмиÑована на Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð²Ñемени, возвÑаÑаемÑй ÑÑнкÑией bookings.now():
SELECT bookings.now() as now;
now
------------------------
2017-08-15 18:00:00+03
ÐÑноÑиÑелÑно именно ÑÑого моменÑа вÑемени вÑе ÑейÑÑ Ð´ÐµÐ»ÑÑÑÑ Ð½Ð° пÑоÑедÑие и бÑдÑÑие:
SELECT status,
count(*) as count,
min(scheduled_departure) as min_scheduled_departure,
max(scheduled_departure) as max_scheduled_departure
FROM flights
GROUP BY status
ORDER BY min_scheduled_departure;
status | count | min_scheduled_departure | max_scheduled_departure
-----------+-------+-------------------------+-------------------------
Arrived | 16707 | 2017-07-16 01:50:00+03 | 2017-08-15 17:25:00+03
Cancelled | 414 | 2017-07-19 11:35:00+03 | 2017-09-14 20:55:00+03
Departed | 58 | 2017-08-15 09:55:00+03 | 2017-08-15 17:50:00+03
Delayed | 41 | 2017-08-15 15:15:00+03 | 2017-08-16 17:25:00+03
On Time | 518 | 2017-08-15 17:55:00+03 | 2017-08-16 18:00:00+03
Scheduled | 15383 | 2017-08-16 18:05:00+03 | 2017-09-14 20:40:00+03
(6 ÑÑÑок)
Ðайдем ближайÑий ÑейÑ, вÑлеÑаÑÑий из ÐкаÑеÑинбÑÑга в ÐоÑквÑ. ÐÑполÑзоваÑÑ Ð´Ð»Ñ Ñакого запÑоÑа ÑаблиÑÑ flight не оÑÐµÐ½Ñ Ñдобно, Ñак как в ней Ð½ÐµÑ Ð¸Ð½ÑоÑмаÑии о гоÑодаÑ
оÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸ пÑибÑÑиÑ. ÐоÑÑÐ¾Ð¼Ñ Ð²Ð¾ÑполÑзÑемÑÑ Ð¿ÑедÑÑавлением flights_v:
\x
SELECT f.*
FROM flights_v f
WHERE f.departure_city = 'ÐкаÑеÑинбÑÑг'
AND f.arrival_city = 'ÐоÑква'
AND f.scheduled_departure > bookings.now()
ORDER BY f.scheduled_departure
LIMIT 1;
-[ RECORD 1 ]-------------+-----------------------------------
flight_id | 10927
flight_no | PG0226
scheduled_departure | 2017-08-16 08:10:00+03
scheduled_departure_local | 2017-08-16 10:10:00
scheduled_arrival | 2017-08-16 09:55:00+03
scheduled_arrival_local | 2017-08-16 09:55:00
scheduled_duration | 01:45:00
departure_airport | SVX
departure_airport_name | ÐолÑÑово
departure_city | ÐкаÑеÑинбÑÑг
arrival_airport | SVO
arrival_airport_name | ШеÑемеÑÑево
arrival_city | ÐоÑква
status | On Time
aircraft_code | 773
actual_departure |
actual_departure_local |
actual_arrival |
actual_arrival_local |
actual_duration |
ÐбÑаÑиÑе внимание, ÑÑо в пÑедÑÑавлении flights_v Ñказано не ÑолÑко моÑковÑкое вÑемÑ, но и меÑÑное вÑÐµÐ¼Ñ Ð² аÑÑопоÑÑаÑ
вÑлеÑа и пÑилеÑа.
K.5.4. ÐÑониÑованиÑ
Ðаждое бÑониÑование Ð¼Ð¾Ð¶ÐµÑ Ð²ÐºÐ»ÑÑаÑÑ Ð½ÐµÑколÑко билеÑов, по Ð¾Ð´Ð½Ð¾Ð¼Ñ Ð½Ð° каждого паÑÑажиÑа. ÐилеÑ, в ÑÐ²Ð¾Ñ Ð¾ÑеÑедÑ, Ð¼Ð¾Ð¶ÐµÑ Ð²ÐºÐ»ÑÑаÑÑ Ð½ÐµÑколÑко пеÑелеÑов. ÐÐ¾Ð»Ð½Ð°Ñ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾Â Ð±ÑониÑовании наÑ
одиÑÑÑ Ð² ÑÑÑÑ
ÑаблиÑаÑ
: bookings, tickets и ticket_flights.
ÐайдÑм неÑколÑко бÑониÑований Ñ Ñамой вÑÑокой ÑÑоимоÑÑÑÑ:
SELECT *
FROM bookings
ORDER BY total_amount desc
LIMIT 10;
book_ref | book_date | total_amount
----------+------------------------+--------------
3B54BB | 2017-07-05 17:08:00+03 | 1204500.00
3AC131 | 2017-07-31 01:06:00+03 | 1087100.00
65A6EA | 2017-07-03 06:28:00+03 | 1065600.00
D7E9AA | 2017-08-08 05:29:00+03 | 1062800.00
EF479E | 2017-08-02 15:58:00+03 | 1035100.00
521C53 | 2017-07-08 09:25:00+03 | 985500.00
514CA6 | 2017-07-27 05:07:00+03 | 955000.00
D70BD9 | 2017-07-05 12:47:00+03 | 947500.00
EC7EDA | 2017-07-02 16:13:00+03 | 946800.00
8E4370 | 2017-07-28 02:04:00+03 | 945700.00
(10 ÑÑÑок)
ÐоÑмоÑÑим, из какиÑ
билеÑов ÑоÑÑÐ¾Ð¸Ñ Ð±ÑониÑование Ñ ÐºÐ¾Ð´Ð¾Ð¼ 521C53:
SELECT ticket_no,
passenger_id,
passenger_name
FROM tickets
WHERE book_ref = '521C53';
ticket_no | passenger_id | passenger_name
---------------+--------------+--------------------
0005432661914 | 8234 547529 | IVAN IVANOV
0005432661915 | 2034 201228 | ANTONINA KUZNECOVA
(2 ÑÑÑоки)
ÐÑли Ð½Ð°Ñ Ð¸Ð½ÑеÑеÑÑеÑ, какие пеÑелеÑÑ Ð²ÐºÐ»ÑÑÐµÐ½Ñ Ð² Ð±Ð¸Ð»ÐµÑ ÐнÑÐ¾Ð½Ð¸Ð½Ñ ÐÑзнеÑовой, Ñо ÑÑо можно ÑзнаÑÑ Ð·Ð°Ð¿ÑоÑом:
SELECT to_char(f.scheduled_departure, 'DD.MM.YYYY') AS when,
f.departure_city || ' (' || f.departure_airport || ')' AS departure,
f.arrival_city || ' (' || f.arrival_airport || ')' AS arrival,
tf.fare_conditions AS class,
tf.amount
FROM ticket_flights tf
JOIN flights_v f ON tf.flight_id = f.flight_id
WHERE tf.ticket_no = '0005432661915'
ORDER BY f.scheduled_departure;
when | departure | arrival | class | amount
------------+----------------------+----------------------+----------+-----------
29.07.2017 | ÐоÑква (SVO) | ÐнадÑÑÑ (DYR) | Business | 185300.00
02.08.2017 | ÐнадÑÑÑ (DYR) | Khabarovsk (KHV) | Business | 92200.00
03.08.2017 | ХабаÑовÑк (KHV) | ÐлаговеÑенÑк (BQS) | Business | 18000.00
08.08.2017 | ÐлаговеÑенÑк (BQS) | ХабаÑовÑк (KHV) | Business | 18000.00
12.08.2017 | ХабаÑовÑк (KHV) | ÐнадÑÑÑ (DYR) | Economy | 30700.00
17.08.2017 | ÐнадÑÑÑ (DYR) | ÐоÑква (SVO) | Business | 185300.00
(6 ÑÑÑок)
Ðак видим, вÑÑÐ¾ÐºÐ°Ñ ÑÑоимоÑÑÑ Ð±ÑониÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¾Ð±ÑÑÑнÑеÑÑÑ Ð±Ð¾Ð»ÑÑим колиÑеÑÑвом пеÑелÑÑов на далÑние ÑаÑÑÑоÑÐ½Ð¸Ñ Ð±Ð¸Ð·Ð½ÐµÑ-клаÑÑом.
ЧаÑÑÑ Ð¿ÐµÑелÑÑов в ÑÑом билеÑе Ð¸Ð¼ÐµÐµÑ Ð±Ð¾Ð»ÐµÐµ Ñанние даÑÑ, Ñем знаÑение bookings.now(): ÑÑо знаÑиÑ, ÑÑо они Ñже вÑполненÑ. РпоÑледний Ð¿Ð¾Ð»ÐµÑ ÐµÑÑ Ð¿ÑедÑÑоиÑ. ÐоÑле ÑегиÑÑÑаÑии на ÑÐµÐ¹Ñ Ð²ÑпиÑÑваеÑÑÑ Ð¿Ð¾ÑадоÑнÑй Ñалон Ñ Ñказанием меÑÑа в ÑамолеÑе. ÐÑ Ð¼Ð¾Ð¶ÐµÐ¼ поÑмоÑÑеÑÑ ÐºÐ°ÐºÐ¸Ðµ именно меÑÑа занимала ÐнÑонина (обÑаÑиÑе внимание на внеÑнее левое Ñоединение Ñ ÑаблиÑей boarding_passes):
SELECT to_char(f.scheduled_departure, 'DD.MM.YYYY') AS when,
f.departure_city || ' (' || f.departure_airport || ')' AS departure,
f.arrival_city || ' (' || f.arrival_airport || ')' AS arrival,
f.status,
bp.seat_no
FROM ticket_flights tf
JOIN flights_v f ON tf.flight_id = f.flight_id
LEFT JOIN boarding_passes bp ON tf.flight_id = bp.flight_id
AND tf.ticket_no = bp.ticket_no
WHERE tf.ticket_no = '0005432661915'
ORDER BY f.scheduled_departure;
when | departure | arrival | status | seat_no
------------+----------------------+----------------------+-----------+---------
29.07.2017 | ÐоÑква (SVO) | ÐнадÑÑÑ (DYR) | Arrived | 5C
02.08.2017 | ÐнадÑÑÑ (DYR) | ХабаÑовÑк (KHV) | Arrived | 1D
03.08.2017 | ХабаÑовÑк (KHV) | ÐлаговеÑенÑк (BQS) | Arrived | 2C
08.08.2017 | ÐлаговеÑенÑк(BQS) | ХабаÑовÑк(KHV) | Arrived | 2D
12.08.2017 | ХабаÑовÑк(KHV) | ÐнадÑÑÑ(DYR) | Arrived | 20B
17.08.2017 | ÐнадÑÑÑ(DYR) | ÐоÑква(SVO) | Scheduled |
(6 ÑÑÑок)
K.5.5. Ðовое бÑониÑование
ÐопÑобÑем оÑпÑавиÑÑ ÐлекÑандÑа ÐиколаевиÑа РадиÑева по маÑÑÑÑÑÑ, коÑоÑÑй пÑÐ¸Ð½ÐµÑ ÐµÐ¼Ñ Ð¸Ð·Ð²ÐµÑÑноÑÑÑ. РазÑмееÑÑÑ Ð±ÐµÑплаÑно и бизнеÑ-клаÑÑом. ÐÑедваÑиÑелÑно найдем «завÑÑаÑний» ÑейÑ, а Ñакже позабоÑимÑÑ Ð¾ возвÑаÑении ÑеÑез неделÑ.
BEGIN;
INSERT INTO bookings (book_ref, book_date, total_amount)
VALUES ('_QWE12', bookings.now(), 0);
INSERT INTO tickets (ticket_no, book_ref, passenger_id, passenger_name)
VALUES ('_000000000001', '_QWE12', '1749 051790', 'ALEKSANDR RADISHCHEV');
INSERT INTO ticket_flights (ticket_no, flight_id, fare_conditions, amount)
VALUES ('_000000000001', 8525, 'Business', 0),
('_000000000001', 4967, 'Business', 0);
COMMIT;
ÐÑ Ð½Ð°Ñинаем иденÑиÑикаÑоÑÑ Ñ Ð¿Ð¾Ð´ÑÑÑкиваниÑ, ÑÑÐ¾Ð±Ñ Ð½Ðµ пеÑеÑекаÑÑÑÑ Ñ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð¾Ð¼ знаÑений, пÑиÑÑÑÑÑвÑÑÑÐ¸Ñ Ð² базе.
СÑÐ°Ð·Ñ Ð·Ð°ÑегиÑÑÑиÑÑемÑÑ Ð½Ð° завÑÑаÑний ÑейÑ:
INSERT INTO boarding_passes (ticket_no, flight_id, boarding_no, seat_no)
VALUES ('_000000000001', 8525, 1, '1A');
ÐÑовеÑим инÑоÑмаÑÐ¸Ñ Ð¾ Ñозданном бÑониÑовании:
SELECT b.book_ref,
t.ticket_no,
t.passenger_id,
t.passenger_name,
tf.fare_conditions,
tf.amount,
f.scheduled_departure_local,
f.scheduled_arrival_local,
f.departure_city || ' (' || f.departure_airport || ')' AS departure,
f.arrival_city || ' (' || f.arrival_airport || ')' AS arrival,
f.status,
bp.seat_no
FROM bookings b
JOIN tickets t ON b.book_ref = t.book_ref
JOIN ticket_flights tf ON tf.ticket_no = t.ticket_no
JOIN flights_v f ON tf.flight_id = f.flight_id
LEFT JOIN boarding_passes bp ON tf.flight_id = bp.flight_id
AND tf.ticket_no = bp.ticket_no
WHERE b.book_ref = '_QWE12'
ORDER BY t.ticket_no, f.scheduled_departure;
-[ RECORD 1 ]-------------+---------------------
book_ref | _QWE12
ticket_no | _000000000001
passenger_id | 1749 051790
passenger_name | ALEKSANDR RADISHCHEV
fare_conditions | Business
amount | 0.00
scheduled_departure_local | 2017-08-16 09:45:00
scheduled_arrival_local | 2017-08-16 10:35:00
departure | СанкÑ-ÐеÑеÑбÑÑг (LED)
arrival | ÐоÑква (SVO)
status | On Time
seat_no | 1A
-[ RECORD 2 ]-------------+---------------------
book_ref | _QWE12
ticket_no | _000000000001
passenger_id | 1749 051790
passenger_name | ALEKSANDR RADISHCHEV
fare_conditions | Business
amount | 0.00
scheduled_departure_local | 2017-08-23 10:20:00
scheduled_arrival_local | 2017-08-23 11:10:00
departure | ÐоÑква (SVO)
arrival | СанкÑ-ÐеÑеÑбÑÑг (LED)
status | Scheduled
seat_no |
ÐадеемÑÑ, ÑÑо ÑÑи неÑколÑко пÑоÑÑÑÑ Ð¿ÑимеÑов помогли ÑоÑÑавиÑÑ Ð¿ÑедÑÑавление о ÑодеÑжимом демонÑÑÑаÑионной Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ .