2017-01-31 9 views
-2

Привет всем, у меня есть две таблицы, которые имеют одинаковые данные. Эти таблицы называются TrainingCity и TrainingState.Внутреннее соединение MS SQL для заполнения одинаковых имен столбцов

Я обновляю строку в tEvents таблица с введенными пользователями данными на форме веб-сайта. Однако tTRIP таблица прикрепляется к уже введено данные по tEvents стол.

Я ищу, чтобы захватить просто TrainingCity и TrainingState значения и включить их в обновлении к таблице tEvents тех же столбцов имен.

SELECT 
    *, TT.TrainingCity, TT.TrainingState 
FROM 
    tEvents AS TE 
INNER JOIN 
    tTRIP AS TT 
ON 
    TT.RequestID = TE.RequestID 
WHERE 
    TE.EventID = 12 
AND 
    TE.RequestID = 801 

Мой запрос на обновление выглядит следующим образом:

command = new SqlCommand("UPDATE " + 
          "tEvents " + 
         "SET " + 
          buildTblVal + 
         " WHERE " + 
          "EventID = @eventID " + 
         "AND " + 
          "RequestID = @reqID", con); 

Что бы необходимость запроса модифицировать тоже для того, чтобы захватить эти 2 значения из tTRIP таблицы и поместить их в tEvents стол?

+0

Можете ли вы разработать немного о схемы таблиц, с которыми вы имеете дело? Кроме того, вы указываете, что таблица tTRIP привязана к уже введенным данным в таблице tEvents. Что может случиться? –

+0

Вы динамически создаете SQL, предоставляя имена столбцов во время выполнения. У вас плохая совесть? Возможно, вам следует :-) Вы использовали [QueryFirst] (http://marketplace.visualstudio.com/items?itemName=bbsimonbb.QueryFirst), который я написал, этот вариант будет удален, и вы будете счастливее и живете дольше. – bbsimonbb

ответ

0

Ну, я только что получил его :)

UPDATE 
    tEvents 
SET 
    TrainingState = tT.TrainingState, 
    TrainingCity = tT.TrainingCity, 
    ....[other columns here]... 
FROM (
    SELECT 
     TrainingCity, TrainingState, RequestID 
    FROM 
     tTRIP 
    ) AS tT 
WHERE 
    tT.RequestID = tEvents.RequestID 
AND 
    tEvents.EventID = 12 
AND 
    tEvents.RequestID = 801 
1

Я думаю, что вы ищете что-то вроде этого:

UPDATE TEvents 
SET TrainingState = trip.TrainingState, 
    TrainingCity = trip.TrainingCity 
FROM TEvents events 
    JOIN TTrip trip 
     ON events.RequestId = trip.RequestId 
WHERE events.EventId = 1 

Пример скрипку здесь: http://www.sqlfiddle.com/#!6/aa863/3/0

+0

Это не будет обновлять данные для обеих таблиц? Я бы предположил, что мне пришлось бы ** SET TrainingState = "blah" ** для того, чтобы ** "blah" ** был установлен в ** trip.TrainingState **, а? Поскольку ваш запрос выглядит прямо сейчас, кажется, что он копирует только что ** ** в базе данных на TrainingState для events.EventId = 1 и копирует это в trip.TrainingState? – StealthRT

 Смежные вопросы

  • Нет связанных вопросов^_^