2016-08-24 2 views
1

Мы переносим базу данных Access в Azure, но одно обновление не работает, несмотря на попытку нескольких изменений синтаксиса и удаления пробелов.Запрос на обновление доступа к SQL Server

Ниже приведен вид конструкции запроса в Access: Query Design

Ниже приводится выражение SQL запроса обновления в Access:

UPDATE SPEND_steve, KeywordRULES 
SET SPEND_steve.Category = [KeywordRULES].Category 
WHERE (((SPEND_steve.Category) Is Null) AND ((SPEND_steve.ItemDescription) Like "*" 
And (SPEND_steve.ItemDescription)=[KeywordRULES].[ItemDescription] 
And (SPEND_steve.ItemDescription) Like "*")); 

С выше я получаю error 102: Incorrect syntax near ','.

Заранее благодарю за любую помощь, чтобы переместить этот действующий запрос из Access на SQL-сервер !!!

ответ

0

Попробуйте удалить «, KeywordRULES» из строки 1, оператор UPDATE может обновлять только одну таблицу (или просматривать) за раз.

UPDATE SPEND_steve 
SET SPEND_steve.Category = 
[KeywordRULES].Category WHERE (((SPEND_steve.Category) Is Null) AND 
((SPEND_steve.ItemDescription) Like "" And (SPEND_steve.ItemDescription)= 
[KeywordRULES].[ItemDescription] And (SPEND_steve.ItemDescription) Like "")) ; 
+0

SQLOnly, спасибо, я вытащил это из строки обновления, теперь ваш комментарий оценен! –

0

Синтаксис SQL Update немного отличается от Access, поскольку каждый оператор обновления должен влиять на одну таблицу. Однако вы можете ссылаться на другие таблицы через соединение или другие способы в зависимости от того, что вы пытаетесь сделать.

Таким образом, KeywordRules неявно объединяется в ваш запрос. Поэтому вы намерены обновить таблицу SPEND_steve на основе информации из таблицы KeywordRules. Вы можете сделать это, присоединившись к правилам ключевых слов.

Update SPEND_steve 
Set SPEND_steve.Category = [KeywordRULES].Category WHERE 
(((SPEND_steve.Category) Is Null) AND ((SPEND_steve.ItemDescription) Like "" 
And (SPEND_steve.ItemDescription) Like "")) 
JOIN KeywordRules on (SPEND_steve.ItemDescription)=[KeywordRULES].[ItemDescription]; 

Кроме того, вы должны изменить like "" к = "", которые могут получали методом прирост производительности, хотя вы, возможно, захотите проверить AND IS Not NULL, а если он может быть пустым.

+0

Spence спасибо * очень * много! Вы меня указали в лучшем направлении, мне нужно потратить больше времени на SQL, чтобы получить синтаксис правильно, но я надеюсь, что он будет запущен в ближайшее время. –

+0

Ты здесь новый. Вам нужно нажать маленькую стрелку на ответ, чтобы сказать, что вам понравилось, и нажмите галочку, если ответ решит вашу проблему. – Spence

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