![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Удаление записей в access [access 2003]
pavel_guzhanov © (2009-12-18 14:09:00)В базе есть две таблицы, 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 Скобки в запросе пробовал удалять, ничего не меняется.
sniknik (2009-12-18 15:12:00) [1]> Т.е. статья WHERE здесь никомим образом фигурировать не должна,
да в общем то по большому счету это одно и тоже, с inner просто более однозначные запросы получаются (имхо), и более функциональнее (нет в jet синтаксиса +=, =+, и д.р.), а в простых случаях можно и так и так.
Anatoly Podgoretsky (2009-12-18 15:12:00) [2]> pavel_guzhanov (18.12.2009 14:09:00) [0]
Откуда предложение то?
Что то на правду не похоже.
Или ты с Акцессом через COM работаешь?
Формат команды DELETE ты уже конечно в справке посмотрел?
sniknik (2009-12-18 15:06:00) [3]> написал вот так -
по моему так нужно, если правильно помню
delete t1.* from t1
...
pavel_guzhanov (2009-12-18 14:58:00) [4]
> 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
получаю сообщение, что надо указать таблицу, содержащую удаляемые записи.
Сергей М. (2009-12-18 14:23:00) [5]> я ведь в запросе не использую параметров
А откуда Access знает что [t2].[чего-то-там] - это не параметр ?
Таблица t2 в тексте запроса должна фигурировать в INNER JOIN-присоединении (по всем полям, подлежащим сравнению на совпадение) к таблице t1, а у тебя жто присоединение напрочь отсутствует.
Вот Access и предполагает, что ты в запросе указывает имена параметров.
Т.е. статья WHERE здесь никомим образом фигурировать не должна, а вместо нее должно быть INNER JOIN t2 ON .. и далее вся та петрушка, которая у тебя фигурирует в выражении для WHERE-статьи.
clickmaker (2009-12-18 14:21:00) [6]delete from [t1]
from [t1] as t, [t2]
where t.[firstname]=[t2].[firstname] and t.[lastname]=[t2].[lastname] and t.[middlename]=[t2].[middlename]