Как загрузить конкретные атрибуты из двух таблиц в другую? - PullRequest
0 голосов
/ 29 сентября 2011

Я пытаюсь загрузить атрибуты из двух таблиц в одну таблицу.

У меня есть таблица местоположений:

Id  City       State     Country
===============================
1   New York   New York  USA
2   Portland   Oregon    USA
3   Tokyo      Honshu    Japan

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

Id  First_Name  Last_Name  Hometown_City  Hometown_State  Hometown_Country
===========================================================================
1   Brett       Burr       New York       New York        USA
2   Bucky       Beaver     Portland       Oregon          USA
3   Ranma       Saotome    Tokyo          Honshu          Japan

Я создаю новую таблицу для пользователей, которая вместо отдельных полей Hometown имеет внешний ключ Hometown_Id.

Что-то вроде:

Id  First_Name  Last_Name  Hometown_Id
========================================
1   Brett       Burr       1
2   Bucky       Beaver     2
3   Ranma       Saotome    3

Однако у меня возникла проблема с синтаксисом при вставке данных в новую таблицу Users.

Я могу вставить неполя, основанные на расположении, легко с помощью такой команды:

INSERT INTO newusers (Id, First_Name, Last_Name) 
SELECT DISTINCT Id, First_Name, Last_Name 
FROM users

Однако я не уверен в правильном синтаксисе для добавления значений из таблицы местоположений

1 Ответ

0 голосов
/ 29 сентября 2011

Предполагая, что у вас есть соответствующие ограничения, и что таблица Location содержит уникальные записи, должно работать следующее:

INSERT INTO newusers (Id, First_Name, Last_Name, Hometown_Id)
SELECT users.Id, users.First_Name, users.Last_Name, locations.Id
FROM users
INNER JOIN locations
ON locations.City = users.Hometown_City
AND locations.State = users.Hometown_State
AND locations.Country = users.Hometown_Country

Если вам требуется более одного местоположения (например, «текущий»)запись о месте жительства), псевдоним и присоединение к таблице locations (от users) во второй раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...