Попытка вставить поле из одной таблицы в другую

#sql #sql-server

#sql #sql-сервер

Вопрос:

Итак, моя основная таблица — TableA (поля: CustomerID, A2, A3, A4, A5), которая содержит все поля, кроме одного… Мне нужно добавить поле TransactionID TableB в TableA, чтобы оно выглядело следующим образом: TransactionID, CustomerID, A2, A3, A4, A5.

Таблица A и таблица B могут связываться друг с другом при вводе CustomerID.

 SELECT 
b.TransactionID, a.CustomerID, a.2, a.3, a.4, a.5
FROM TableB b
JOIN TableA a
    ON a.CustomerID = b.CustomerID
  

Этот запрос получает все, что мне нужно. Однако у меня возникают проблемы, когда дело доходит до вставки поля TransactionID в TableA. Я знаю, что упускаю что-то очевидное.

Спасибо.

Дополнительная информация: Проблема в том, что TableB не содержит поле TransactionID. Каждый CustomerID содержит как минимум 1 TransactionID, но моя цель — добавить TransactionID в TableB. Общим знаменателем между таблицами A и TableB является CustomerID.

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

1. есть ли в TableA поле TransactionID , и вы пытаетесь обновить это поле значением из TableB?

2. какую ошибку вы получаете при вставке?

3. В чем проблема? Вы получаете ошибку или что-то еще? Можете ли вы показать свою инструкцию insert, которую вы пробовали?

4. хотя я не совсем уверен, зачем вам это нужно в, TableA если вы всегда можете получить его из TableB , как в вашем запросе выше

5. @isaace Проблема в том, что TableB не содержит поля TransactionID. Каждый CustomerID содержит как минимум 1 TransactionID, но моя цель — добавить TransactionID в TableB. Общим знаменателем между таблицами A и TableB является CustomerID.

Ответ №1:

Вам нужно добавить поле в TableA. Вот документация о том, как это сделать в SQL Server. После этого вы используете Update инструкцию, аналогичную Select в вашем первоначальном сообщении.

Ответ №2:

не уверен насчет типа данных TransactionID, но это должно быть что-то вроде:

 ALTER TABLE TableA
ADD TransactionID varchar(30);


UPDATE  a
SET a.TransactionID = b.TransactionID
FROM TableA a
JOIN TableB b
    ON a.CustomerID = b.CustomerID
  

Ответ №3:

Похоже, сначала вам нужно добавить столбец в TableA . Это синтаксис

 ALTER TABLE table_name
ADD column_name datatype;
  

И затем вы можете выполнить этот запрос, чтобы импортировать данные из TableB в ваш новый столбец в TableA

 UPDATE a 
SET a.TransactionID  = b.TransactionID
FROM TableA a
INNER JOIN TableB b ON a.CustomerID = b.CustomerID