2013-07-11 3 views
1

Я пытаюсь обновить таблицу в базе данных MS Access, которая содержит некоторую информацию о фильмеMS Access SQL: Замена поля со строкой + другое значение строки

 

    [Table:Movies] 
    MovieName CrewId CrewMember 
    The Big Lebowski  1  Joel Coen 
    The Big Lebowski  2  Ethel Coen 
    The Big Lebowski  3  Carter Burwell 
    The Big Lebowski  4  Roger Deakins 
    The Matrix    1  Andy Wachowski 
    The Matrix    2  Lana Wachowski 
    The Matrix    3  Don Davis 
    The Matrix    4  Bill Pope 

CrewId 1 является директором и 2 совместно/помощник режиссер и т. д.

Что я пытаюсь сделать, это заменить имя содиректор в колонке «член экипажа» с «помощником директора Name», как показано ниже

 

    [Table:Movies] 

    MovieName CrewId CrewMember 
    The Big Lebowski  1  Joel Coen 
    The Big Lebowski  2  Assistant of Joel Coen 
    The Big Lebowski  3  Carter Burwell 
    The Big Lebowski  4  Roger Deakins 
    The Matrix    1  Andy Wachowski 
    The Matrix    2  Assistant of Andy Wachowski 
    The Matrix    3  Don Davis 
    The Matrix    4  Bill Pope 

Я использую следующий запрос, который дает ошибку синтаксиса (отсутствующий оператор).

 

    UPDATE t1 
    SET t1.CrewMember = 'Assistant of '+ t2.CrewMember 
    FROM Movies t1, Movies t2 
    WHERE t1.MovieName = t2.MovieName 
    AND t1.CrewId = 2 
    AND t2.CrewId = 1; 

Пожалуйста, помогите мне с этим запросом

+1

После замены «Этель Коэна» и «Lana wachoswki» , вы планируете хранить свои имена где угодно? – PowerUser

+0

№ Это должно быть заменено новой строкой. btw Fabians решение работало. Спасибо, парни. – JSmith

ответ

2

Попробуйте это:

UPDATE Movies as t1, Movies as t2 
SET t1.CrewMember = 
'Assistant of ' + t2.CrewMember 
WHERE t1.MovieName=t2.MovieName AND t1.CrewId=2 AND t2.CrewId=1 
+0

Большое спасибо Fabian. Я до сих пор не знаю, что я делал неправильно но ваше решение работало как прелесть. – JSmith

+2

В синтаксисе UPDATE нет предложения FROM, вы должны поместить обе таблицы после UPDATE http://msdn.microsoft.com/en-us/library/office/bb221186(v=office.12).aspx –

+0

oh право .. удивляться, почему никто другой не заметил, что .. – JSmith

1

В Access, строка concatonation делается с помощью "&"

Так оно и должно быть:

UPDATE t1 
    SET t1.CrewMember = 'Assistant of '& t2.CrewMember 
    FROM Movies t1, Movies t2 
    WHERE t1.MovieName = t2.MovieName 
    AND t1.CrewId = 2 
    AND t2.CrewId = 1; 
0

Я предполагаю, что причина в том, потому что оператор конкатенации строк в Access равен &, а не +. Кроме того, я думаю, что доступ требует as для псевдонимов таблиц, и вы можете использовать join для условия:

UPDATE t1 
    SET t1.CrewMember = 'Assistant of '+ t2.CrewMember 
    FROM Movies as t1 join 
     Movies as t2 
     on t1.MovieName = t2.MovieName 
    where t1.CrewId = 2 AND t2.CrewId = 1; 
+0

Спасибо за ваш ответ. Я пробовал все, что вы предлагали, в первую очередь, а затем в то же время, но я все равно получаю ту же ошибку. ' Синтаксическая ошибка (отсутствующий оператор) в выражении запроса«помощник "и t2.CrewMember из фильмов t1 РЕГИСТРИРУЙТЕСЬ Фильмы как t2 ON t1.MovieName = t2.MovieName. ' и выдвигает на первый план FROM в запросе после отклонения диалогового окна ошибки. – JSmith

+0

@JSmith, в вашем сообщении об ошибке, похоже, что вы использовали как двойную, так и одну цитату. Хотя вы можете использовать тот или иной, вы просто не можете использовать их взаимозаменяемо в одном и том же заявлении. только один или другой, то есть «Ассистент» и « – PowerUser

+0

» я заметил, что и повторно проверил мой запрос. Я использовал одинарные кавычки в моем запросе для строки. Двойная цитата открытия появляется только в сообщении об ошибке. – JSmith

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