Простой 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 1City_id Name 1 NY 2 Boston
Start_city End_city
NY Boston
Boston NYSELECT 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Таким образом, в результате выполнения данного запроса получим список пар городов, между которыми есть маршрут, и названия этих городов.