Объединение двух таблиц для отображения данных относительно друг друга

#mysql #sql #inner-join

#mysql #sql #внутреннее объединение

Вопрос:

Я новичок в типах SQL joins и у меня очень простая проблема.

У меня есть две таблицы:

Таблица пользователей

ID Город
1 Сан-Франциско
2 Москва
3 Лондон
4 Вашингтон

Таблица городов

город Страна
Москва Россия
Сан-Франциско США
Вашингтон США
Лондон Англия

Я выбираю идентификатор из таблицы users и сопоставляю его с соответствующей страной в таблице cities. Я хочу создать приведенную ниже таблицу, используя оператор SQL select:

ID Страна
1 США
2 Россия
3 Англия
4 США

До сих пор я написал следующее, но я понятия не имею, с чего начать (или если это вообще правильное начало), поскольку соединения SQL меня немного смущают.

 SELECT users.city, cities.city FROM users INNER JOIN cities ON
 

Комментарии:

1. Хотя есть проблема с сохранением названия города в users таблице: как насчет мест с одинаковым названием города? Например , Лондон, штат Кентукки против Лондона, Англия .

2. Написание «Сан-Франциско» было непоследовательным в первоначальной версии. Это была фактическая ошибка (вызванная опечаткой)? Если нет, то как это повлияет на результат? Можно ли написать устойчивый к ошибкам SQL-запрос?

Ответ №1:

Это простое объединение:

 select u.*, c.country
from users u
inner join cities c on c.city = u.city