У меня проблема с доступом к UPDATE на основе JOIN.Как вставить INSERT с помощью SELECT в таблицу и запрос
Есть 2 Заявление, которое мне нужно объединить:
SELECT a.f1, a.f2, a.f3
FROM tableA a, viewB b
WHERE a.f2 = b.f2 AND a.f3 = b.f3
viewB является запрос, но работает отлично
UPDATE tableA a
SET a.f1 = 'x'
работает хорошо, тоже.
Сейчас я стараюсь:
UPDATE tableA a, viewB b
SET a.f1 = 'x'
WHERE a.f2 = b.f2 AND a.f3 = b.f3
терпит неудачу, говорит Access:
операции должен использоваться обновляемый запрос.
Это глупо, потому что в поле зрения нет поля. Я пробовал несколько других решений с помощью FROM, JOIN Subselect, но не нашел решения.
Кто-нибудь знает умное решение?
Оливье, спасибо. Именно в этом и есть проблема. viewB НЕ обновляется, потому что он использует DISTINCT, но если вы посмотрите на мой код, я не хочу ничего обновлять с помощью viewB, но мне нужно найти мои записи для обновления. Есть идеи? – Alex004
В этом случае вы можете использовать подзапрос (как уже указывал Andomar): 'UPDATE tableA AS a SET a.f1 = 'x' WHERE EXISTS (SELECT * FROM viewB AS b WHERE (a.f2 = b.f2) AND (a.f3 = b.f3)). См. Мое редактирование. –
Нет, это не работает: подзапрос работает корректно, но UPDATE работает на ВСЕХ записях: мне кажется, что верхний запрос и подзапрос неправильно подключены. – Alex004