Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / PostgreSQL Новый топик    Ответить
 Прошу помощи для расчёта расстояния между аэропортами из учебной базы Avia  [new]
Julia Not
Member

Откуда:
Сообщений: 1
Всем привет!

Работаю с демо базой Avia, хочу найти расстояние по каждому маршруту между аэропортами из таблицы Flights.

В таблице airports_data имею наименование аэропорта, код и координаты.
with rad as(
select radians(ad.coordinates[0]) as Lat1, radians(ad.coordinates[1]) as Lon1, radians(ad2.coordinates[0])as Lat2, radians(ad2.coordinates[1]) as Lon2, ad.airport_code as Otpr, ad2.airport_code as Pril 
from airports_data ad
inner join airports_data ad2 on ad.airport_code = ad2.airport_code)
select acos(sin(rad.Lat1) * sin(rad.Lat2) + cos(rad.Lat1) * cos(rad.Lat2) * cos(rad.Lon1 - rad.Lon2)), fv.departure_airport_name, fv.arrival_airport_name
from rad
inner join flights_v fv on fv.departure_airport = rad.Otpr
inner join flights_v fv2 on fv2.arrival_airport = rad.Pril
where fv.departure_airport_name != fv.arrival_airport_name 


Написала такой код, но получилась огромная таблица, где куча строк Пулково-Домодедово и arc 0. Понимаю, что где-то ошибка в логике.. Прошу помощи, я новичок.
14 ноя 21, 20:33    [22395959]     Ответить | Цитировать Сообщить модератору
 Re: Прошу помощи для расчёта расстояния между аэропортами из учебной базы Avia  [new]
bubuk
Member

Откуда:
Сообщений: 12
Julia Not

with rad as(
select ... ad.airport_code as Otpr, ad2.airport_code as Pril 
from airports_data ad
inner join airports_data ad2 on ad.airport_code = ad2.airport_code
...




у Вас в запросе rad код аэропорта прилета всегда равен коду аэропорта отправления....
Наверное все-таки нужно таблицу flights_v соединять с (airports_data otpr) и (airports_data pril).

rad, flights_v fv2 - похоже лишние....
17 ноя 21, 01:50    [22396789]     Ответить | Цитировать Сообщить модератору
 Re: Прошу помощи для расчёта расстояния между аэропортами из учебной базы Avia  [new]
Guzya
Member

Откуда:
Сообщений: 818
Если правильно помню, для этой бд есть задание на поиск всех пар аэропортов м\у которыми есть прямые перелеты, при этом Москва - Питер и Питер - Москва считаются за одно и то же.
Вот с начала сделайте эту табличку, а уже потом считайте расстояние.
17 ноя 21, 09:38    [22396818]     Ответить | Цитировать Сообщить модератору
Все форумы / PostgreSQL Ответить