2014-08-28 6 views
0

Использование SQLite, я пытаюсь обновить три столбца, основанные на другой таблицы (две колонки)обновление SQL на основе столбца в другой таблице

три колонки (Table1): «AgentCreatedID» «AgentOwnedID» 'AgentSentID'

Другая таблица (таблица2) состоит из «AgentID» и «Обозначение».

Если идентификатор в одном из трех столбцов соответствует «Агентам» во второй таблице, я хочу, чтобы значение «Назначение» было заполнено. Эта таблица представляет собой список ВСЕХ уникальных идентификаторов и соответствующее обозначение. Каждая строка данных имеет Создателя, Владельца и Отправителя. Мне нужно узнать, от какого имени этот человек.

В Access это будет выглядеть примерно так для первого значения. Мне также нужно будет добавить два других значения. UPDATE Таблица 1 ВЛЕВОЕ ПРИСОЕДИНЕНИЕ Table2 ON Таблица1.AgentCreatedID = Таблица2.AgentID SET raw.AgentCreatedID = [Таблица2]! [Обозначение];

Я не уверен, что это! команда или как ее можно использовать в SQLite.

ответ

-2

Восклицательный знак используется для разделения имени рабочего листа на ссылку на этом листе. Here is Microsoft объяснение ссылок на ячейки.

Теперь, когда вы знаете, что [Таблица2]! [Designatio] означает, вы можете упростить его использование только имени столбца.

+0

Ни SQLite, ни Access имеет рабочие листы. –

+0

Вы правы. Я думал о Excel, а не о доступе. В Access используется восклицательный знак для полей [http://stackoverflow.com/questions/2859536/exclamation-marks-in-a-query-sql]. – DDay

0

SQLite не поддерживает соединения в инструкции UPDATE.

Вы должны искать новое значение с коррелированными подзапросами:

UPDATE Table1 
SET AgentCreatedID = (SELECT Designation 
         FROM Table2 
         WHERE AgentID = AgentCreatedID), 
    AgentOwnedID = (SELECT Designation 
         FROM Table2 
         WHERE AgentID = AgentOwnedID), 
    AgentSentID = (SELECT Designation 
         FROM Table2 
         WHERE AgentID = AgentSentID) 
+0

Есть ли способ сделать это в новых столбцах, а не полностью переписать столбцы AgentID? Как возможно, я мог бы добавить команду ALTER TABLE, чтобы добавить три новых столбца в таблицу1? Затем обратитесь к Таблице 2, как вы это делали выше? – trench

+0

Да, вы могли бы сделать три оператора [ALTER TABLE] (http://www.sqlite.org/lang_altertable.html). –

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