Я пытаюсь написать запрос, который определяет, в какие города я не могу лететь напрямую из города, скажем, из Лондона. Учитывая схему:
| c_id | city_name |
| f_id | departure_city_id | destination_city_id |
в настоящее время мой запрос возвращает обратное, т.е. он возвращает города, в которые есть прямой рейс из Лондона
SELECT c2.city_name as «City» FROM flights AS f JOIN cities AS c2 ON f.destination_city_id != c2.c_id JOIN cities AS c ON c.c_id = c.c_id WHERE c.city_name = ‘London’ AND c.c_id != c2.c_id AND f.departure_city_id = c.c_id;
Я бы подумал, что было бы легко изменить это, чтобы получить то, что я хочу. Я думал, изменив третью строку на
JOIN cities AS c2 ON f.destination_city_id = c2.c_id
Сделал бы трюк, но это не так. Любая помощь?
user2184025 18 мар ’13 в 20:56 2013-03-18 20:56
2013-03-18 20:56
2 ответа
города, в которые я не могу лететь прямо из города, скажем, Лондон.
То есть туда можно летать, но не прямо из Лондона. Так JOIN (не LEFT JOIN ) city в flight с помощью destination_city_id :
Как самолеты летают на самом деле? Только факты
SELECT DISTINCT c.city_name FROM cities c JOIN flights f ON f.destination_city_id = c.c_id JOIN cities c2 ON c2.c_id = f.departure_city_id WHERE c2.city_name <> ‘London’;
Тогда я должен только исключить рейсы из Лондона, подать заявку DISTINCT чтобы получить уникальные названия городов, и мы сделали.
Более сложная интерпретация этого вопроса:
«Города, в которые можно лететь из Лондона, но не напрямую»
Но так как это похоже на простую домашнюю работу, я не думаю, что они ожидают от вас рекурсивного запроса.
Источник: stackru.com
Почему в России нет авиарейсов между провинциальными городами?
Чисто юридически они есть. Из условного Новосибирска можно улететь и в Калининград, и в Екатеринбург, и во Владивосток. Только 90 % внутрироссийских рейсов летит через Москву. Из Новосибирска самолет несколько часов летит в столицу, а потом еще полдня пассажир добирается до восточных границ. Почему нельзя сразу за несколько часов долететь из Сибири на Дальний восток??
в избранное
Адвокат Дьявола [9.9K]
Не надо вводить в заблуждение, Новосибирск не является провинциальным городом. Изучите для начала, что такое провинциальные города, а потом корректно задавайте вопрос. — 4 года назад
Sensibel [9K]
Да понял я уже. Вопрос просто нельзя отредактировать. Если модераторы увидят этот комментарий, то пусть исправят на формулировку на «Почему в России крайне мало прямых рейсов между регионами». — 4 года назад
комментировать
Анато лий-тдр5 [15.3K]
4 года назад
Понимаю ваше недоумение. Но у капитализма свои законы — на первом месте рентабельность и получение прибыли. Если рейсов между провинциальными городами нет, то это означает только, что авиакомпании поставлены в такие условия, что организация этих рейсов малоприбыльна, а может и вовсе убыточна.
Рейсы с пересадками — 6 лайфхаков
Для полной картины следовало бы провести исследование всей отрасли пассажирских авиаперевозок. Большое значение имеет стоимость авиационного топлива, которую для внутренних линий и местных авиасообщений нужно снизить для повышения рентабельности авиаперевозок. Тогда, возможно, будут найдены пути решения этой проблемы. Помню ещё времена, когда авиационные сообщения организовывались между небольшими городами даже внутри областей. Для этой цели использовались самолёты Ан-2 (12 пассажиров) и Як-40 (32 пассажира). Сейчас в ФГУП «Сибирский научно-исследователь ский институт авиации имени С. А. Чаплыгина» ведётся разработка лёгкого турбореактивного самолёта СТР-40ДТ для перевозки 19-32 пассажиров
Источник: www.bolshoyvopros.ru
просьба о помощи, postgres
Я новичок в postgres и задаю следующий вопрос. На мой взгляд, есть города отправления и города прибытия. Мне нужно ответить на вопрос: из каких городов нет прямых рейсов между собой? Результат просмотра «маршрутов» следующий:
select distinct departure_city, departure_airport, arrival_airport, arrival_city from routes order by departure_city asc
Моя логика такова: выберите все города прибытия для одного конкретного города отправления. Исключите этот результат (города прибытия) для отдельного списка городов. Но я понятия не имею, как поместить эту логику в запрос sql. Заранее спасибо.
Alexander 15 Июн 2020 в 11:50
15 Июн 2020 в 11:54
1 ответ
Лучший ответ
Сначала я получу список всех городов, а затем сообщу обо всех парах из перекрестного соединения, у которых нет стыковочного рейса:
WITH cities(city) AS ( SELECT departure_city FROM routes UNION SELECT arrival_city FROM routes ) SELECT c1.city, c2.city FROM cities AS c1 JOIN cities AS c2 ON c1.city <> c2.city WHERE NOT EXISTS (SELECT 1 FROM routes AS r WHERE r.departure_city = c1.city AND r.arrival_city = c2.city);
Laurenz Albe 15 Июн 2020 в 12:10
Спасибо, это сработало! Не могли бы вы объяснить, что означает «ВЫБЕРИТЕ 1 ИЗ маршрутов AS r»? Пробовал заменить «1» на «*» и изменений не заметил.
Источник: question-it.com