#sql-server
#sql-сервер
Вопрос:
У меня есть следующая таблица, которая в основном содержит название штата, название города и название коммуны (не уверен, что это так в некоторых странах), и у меня также есть идентификатор штата.
Я сделал другой дизайн для таблицы, например:
Состояние
- State_ID
- Имя_статьи
Город
- City_ID
- Имя_города
- State_ID
Сообщество
- Commune_ID
- Commune_name
- City_ID
Мне удалось вставить штат и город в новую таблицу… но я не могу найти способ вставить коммуны.
Образец данных (из старой таблицы):
1 Adrar Adrar Adrar 01
2 Adrar Adrar Bouda 01
3 Adrar Adrar Ouled Ahmed Tammi 01
4 Adrar Aougrout Aougrout 01
5 Adrar Aougrout Deldoul 01
6 Adrar Aougrout Metarfa 01
Итак, что я в основном хочу сделать здесь, это вставить третий столбец (Deldoul, Metarfa) в мою новую таблицу Commune … за исключением того, что у меня нет идентификатора города. У меня есть только имя. Я попытался получить идентификаторы из моей новой таблицы «City» следующим образом, но это не сработало:
INSERT INTO DB2.dbo.Commune
SELECT commune,
(SELECT id_state from DB2.dbo.State
INNER JOIN DB1.dbo.TabOld
ON Daira = City_name)
FROM [DB1].[dbo].TabOld
Есть мысли?
Комментарии:
1. Заголовок не описывает ваш вопрос. Возможно, название «Разделение данных из одной таблицы в несколько таблиц» более запоминающееся. И можете ли вы описать столбец в старой таблице? Я не вижу названия города и названия штата на изображении.
2. @Vernou извиняется.
Wilaya
= Название штата = НазваниеDaira
городаCommune
= Название коммуны
Ответ №1:
В подзапросе вы можете напрямую использовать внешний столбец (не нужно присоединяться к внешней таблице), например :
INSERT INTO DB2.dbo.Commune (Commune_Name, City_ID)
SELECT commune,
(SELECT City_ID
from DB2.dbo.City
join DB2.dbo.State on State.State_ID=City.State_ID
where City_name=Daira and Willaya=State_Name)
FROM [DB1].[dbo].TabOld