2016-01-28 4 views
1

Я пытаюсь обновить столбец в моей таблице. Вводные таблицы, называемые concatenate из запроса с именем InputConcatenates, который имеет столбец, также называемый concatenate. Я запускаю запрос на обновление с именем поля как конкатенировать имя таблицы как InputCounts и обновление в поле как [InputConcatenates]. [Concatenate]. Но каждый раз, когда я запускаю запрос, он отбрасывает, что 0 записей будут обновлены. Возможно ли мой синтаксис?Стол обновления Столбец столбца запроса

Обновление запросов SQL:

UPDATE InputCounts INNER JOIN InputConcatenate 
ON InputCounts.CONCATENATE = InputConcatenate.CONCATENATE 
SET InputCounts.CONCATENATE = [InputConcatenate].[CONCATENATE]; 

InputConcatenate запросов SQL:

SELECT InputCounts.FLEET, InputCounts.AMMs, [FLEET] & [AMMs] AS CONCATENATE 
FROM InputCounts; 
+0

ОК Я добавил SQL для обоих запросов –

+1

Когда вы тестируете это как новый запрос в конструкторе запросов Access, сколько строк оно возвращается? 'SELECT * FROM InputCounts INNER JOIN InputConcatenate ON InputCounts.CONCATENATE = InputConcatenate.CONCATENATE' – HansUp

+0

Это дает мне синтаксическую ошибку в операции JOIN –

ответ

1

Вы сообщили об этом запрос выполняет то, что вы хотите ...

UPDATE InputCounts 
SET CONCATENATE = [FLEET] & [AMMs] 
WHERE CONCATENATE Is Null; 

Это может быть хорошо , Однако CONCATENATE не обновляется, пока вы не выполните UPDATE, и не обновляется (после того, как ранее полученные значения) в ответ на изменения в FLEET или AMMs

Решают действительно нуждается ли CONCATENATE существовать как поле в таблице. Можно использовать запрос для получения его всякий раз, когда вам это нужно:

SELECT *, FLEET] & [AMMs] AS CONCATENATE 
FROM InputCounts; 

С запросом, CONCATENATE всегда будет в курсе.

Если база данных в формате ACCDB и ваша версия Доступ> = 2010, еще одна возможность заключается в том, чтобы сделать CONCATENATE «вычисляемое поле» типа в конструкции стола:

table Design View showing calculated field type

Если вы предпочитаете CONCATENATE быть нуль всякий раз, когда ФЛОТ или AMMS имеет нулевое значение, изменить Expression свойство поля к [FLEET] + [AMMs]

преимущество расчетного поля является то, что доступ автоматически обновляет свое значение без дополнительных усилий (л ike выполняя UPDATE) от вас.

Недостатком является то, что вы не можете индексировать вычисленное поле. Это означает, что он не подходит для присоединений, WHERE критериев, ORDER BY и т. Д. Вам нужно будет решить, подходит ли это для вашего приложения. :-)

+0

О, черт возьми, я так стараюсь, я все время пытался это сделать, но с равным знаком впереди, и он сохранялся говоря, что нет ma'am lol, но когда вы имеете в виду, что этот показатель не подходит, это означает, что я не могу использовать его в качестве первичного ключа? –

+1

Правильно ... первичный ключ реализован как уникальный индекс ... индекс не может быть рассчитан для поля ... так что калибровочное поле не может быть первичным ключом. Но, возможно, вы могли бы использовать составной первичный ключ на основе 'FLEET' и' AMMs' – HansUp

+0

Как создать составной первичный ключ? –

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