-
В базе есть две таблицы, t1 и t2
В них есть поля firstname, lastname и middlename
Мне надо удалить из таблицы t1 все записи, которые совпадают с записями таблицы t2.
Пишу такой запрос: delete from [t1] where [t1].[firstname]=[t2].[firstname] and [t1].[lastname]=[t2].[lastname] and [t1].[middlename]=[t2].[middlename]
При запуске получаю предложение ввести значения параметров [t2].[firstname], [t2].[lastname], [t2].[middlename].
Но я ведь в запросе не использую параметров, почему он у меня их требует? Как сделать запрос, чтобы все-таки он сработал?
PS Скобки в запросе пробовал удалять, ничего не меняется.
-
delete from [t1] from [t1] as t, [t2] where t.[firstname]=[t2].[firstname] and t.[lastname]=[t2].[lastname] and t.[middlename]=[t2].[middlename]
-
> я ведь в запросе не использую параметров
А откуда Access знает что [t2].[чего-то-там] - это не параметр ? Таблица t2 в тексте запроса должна фигурировать в INNER JOIN-присоединении (по всем полям, подлежащим сравнению на совпадение) к таблице t1, а у тебя жто присоединение напрочь отсутствует. Вот Access и предполагает, что ты в запросе указывает имена параметров.
Т.е. статья WHERE здесь никомим образом фигурировать не должна, а вместо нее должно быть INNER JOIN t2 ON .. и далее вся та петрушка, которая у тебя фигурирует в выражении для WHERE-статьи.
-
> clickmaker © delete from [t1] from [t1] as t, [t2] where t.[firstname]=[t2].[firstname] and t.[lastname]=[t2].[lastname] and t.[middlename]=[t2].[middlename]
на это получаю сообщение, что ошибка в выражении FROM
> Сергей М. ©
написал вот так - delete from t1 inner join t2 on t1.firstname=t2.firstname and t1.lastname=t2.lastname and t1.middlename=t2.middlename
получаю сообщение, что надо указать таблицу, содержащую удаляемые записи.
-
> написал вот так - по моему так нужно, если правильно помню delete t1.* from t1 ...
-
> Т.е. статья WHERE здесь никомим образом фигурировать не должна, да в общем то по большому счету это одно и тоже, с inner просто более однозначные запросы получаются (имхо), и более функциональнее (нет в jet синтаксиса +=, =+, и д.р.), а в простых случаях можно и так и так.
-
> pavel_guzhanov (18.12.2009 14:09:00) [0]
Откуда предложение то? Что то на правду не похоже. Или ты с Акцессом через COM работаешь?
Формат команды DELETE ты уже конечно в справке посмотрел?
|