Вставить p_key строки, вставленной в другую таблицу

#sql #sql-server #tsql

#sql #sql-сервер #tsql

Вопрос:

У меня есть одна таблица, содержащая данные клиента, их основные адресные данные и данные рабочего адреса, их необходимо разделить на 2 таблицы клиенты и адреса.

У клиента есть столбцы «address1» и «address2», которые должны быть первичными ключами соответствующих адресов в таблице адресов, но адреса не могут иметь столбец для клиентских p_keys.

Мой вопрос: как я могу правильно получить p_keys новых адресов в таблице клиента?

Пример того, чего я хотел бы достичь:

 insert into clients
(
    _name, 
    _address1,
    _address2
)
SELECT
    t._name
    select p_key from (insert into addresses values ( t.addressData1 ))
    select p_key from (insert into addresses values ( t.addressData2 ))
FROM fulldata t
  

Не уверен, как это можно сделать, хотя я новичок в sql.

Ответ №1:

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

 INSERT INTO addresses
SELECT *
FROM
(
    SELECT addressData1
    FROM fulldata
    UNION ALL
    SELECT addressData2
    FROM fulldata
) DS
EXCEPT 
SELECT addressData -- or the name of the column in the table 
FROM addresses



insert into clients
(
    _name, 
    _address1,
    _address2
)
SELECT
    t._name
   ,A1.p_key
   ,A2.p_key
FROM fulldata t
INNER JOIN addresses A1
    ON t.addressData1 = A1.addressData -- or the name of the column in the table 
INNER JOIN addresses A2
    ON t.addressData2 = A2.addressData -- or the name of the column in the table 
  

Сначала вставьте адреса, затем присоедините таблицу к fulldata единице.