#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 .