#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