Я хочу создать таблицу сопоставления, в которой я хочу сохранить old_id и соответствующий new_id

#sql #sql-server

#sql #sql-сервер

Вопрос:

У меня есть 2 таблицы профессия и уровень.Я добавляю новый идентификатор для того же уровня и той же профессии.Таким образом, в таблице есть как newid, так и oldid.Но теперь я хочу создать таблицу сопоставления, которая будет содержать это сопоставление.

У меня есть это:

Профессия

 id  name    country
1   doctor  india
2   nurse   india
11  doctor  US
22  nurse   US
 

Я хочу :

Таблица сопоставления профессий

 Oldid   Newid
1       11
2       22
 

И это тот же случай и для таблицы уровней.

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

1. Как вы определяете, какой старый, а какой новый идентификатор. И как вы связываете старое с новым?

2. Привет, белка, я вставляю данные в таблицу профессия, используя 1 SP, который будет принимать входной параметр в качестве идентификатора страны. Итак, я передаю india как @sourceicountryid и вставляю для НАС записи сервера, которые у меня есть против india. (здесь US — @newcountryid)……

Ответ №1:

Предполагая, что oldid всегда поступает из Индии, а newid всегда поступает из США, вы можете самостоятельно присоединиться к profession таблице в соответствии с именем и дифференцироваться по стране:

 SELECT o.id AS oldid, n.id AS newid
INTO   ProffesionMapping
FROM   Proffesion o
JOIN   Proffesion n ON o.name = n.name AND o.country = 'india' and n.country = 'US'
 

Ответ №2:

Как насчет этого?

 SELECT OLD.ID AS OLD_ID
     , NEW.ID AS NEW_ID
     INTO TBL_MAP
FROM     
(
SELECT *
FROM TABLE_1
WHERE ID <= 2
) OLD
INNER JOIN
(
SELECT *
FROM TABLE_1
WHERE ID > 2
) NEW
ON OLD.NAME = NEW.NAME
 

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

1. это временное решение. Это не будет работать для ‘n’ количества записей.

2. Конечно, это был только пример раздела. Ядро находится в suqueries .