Простой JOIN запрос, не удается - MySQL
Формулировка задачи:
Привет всем!
Изучила тему про JOIN на форуме, почитала ссылки, и всё равно не могу составить нормальный JOIN запрос.
Имеется две таблицы
Route
City
Что в итоге хочу получить:
Додумалась до такого кода:
но он не рабочий - в колонках Start_city, End_city выводит название End_city, т.е.
Что я делаю не так?
но теперь возникла ошибка:
City.City_id is not valid in the context where it is used.
Моя база данных создана на DashDB, но не думаю, что это может быть проблемой. Эта СУБД поддерживает JOIN запросы (без псевдонимов исполняет).
Листинг программы
- Start_id End_id
- 1 2
- 2 1
Листинг программы
- City_id Name
- 1 NY
- 2 Boston
Листинг программы
- Start_city End_city
- NY Boston
- Boston NY
Листинг программы
- SELECT City.Name AS Start_city, City.Name as End_city
- FROM Route
- JOIN City ON City.City_id = Route.Start_id AND City.City_id = Route.End_id
Листинг программы
- Start_city End_city
- Boston Boston
- NY NY
Немного подумала, разобралась,к ак использовать псевдонимы, в итоге имею код:
Листинг программы
- SELECT SC.Name AS Start_city, EC.Name as End_city
- FROM Route
- JOIN City AS SC ON City.City_id = Route.Start_id
- JOIN City AS EC ON City.City_id = Route.End_id
Решение задачи: «Простой JOIN запрос, не удается»
textual
Листинг программы
- SELECT cB.name, cA.name
- FROM route r
- JOIN city cA ON cA.city_id = r.start_city_id
- JOIN city cB ON cB.city_id = r.end_city_id;
Объяснение кода листинга программы
В данном коде выполняется простой JOIN запрос на соединение двух таблиц: route
и city
. Запрос выбирает два столбца: name
из таблицы city
(обозначим их как cA и cB для удобства).
- SELECT cB.name, cA.name — выбираем два столбца:
name
из таблицыcity
- FROM route r — указываем таблицу, с которой работаем (в данном случае
route
), и задаем ей псевдонимr
- JOIN city cA ON cA.city_id = r.start_city_id — присоединяем таблицу
city
по столбцуcity_id
, который в таблицеroute
имеет названиеstart_city_id
- JOIN city cB ON cB.city_id = r.end_city_id — присоединяем таблицу
city
по столбцуcity_id
, который в таблицеroute
имеет названиеend_city_id
Таким образом, в результате выполнения данного запроса получим список пар городов, между которыми есть маршрут, и названия этих городов.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д