Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.06.26;
Скачать: CL | DM;

Вниз

Удаление записей в access   Найти похожие ветки 

 
pavel_guzhanov ©   (2009-12-18 14:09) [0]

В базе есть две таблицы, 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 Скобки в запросе пробовал удалять, ничего не меняется.


 
clickmaker ©   (2009-12-18 14:21) [1]

delete   from [t1]
from [t1] as t, [t2]
where t.[firstname]=[t2].[firstname] and t.[lastname]=[t2].[lastname] and t.[middlename]=[t2].[middlename]


 
Сергей М. ©   (2009-12-18 14:23) [2]

> я ведь в запросе не использую параметров

А откуда Access знает что [t2].[чего-то-там] - это не параметр ?
Таблица t2 в тексте запроса должна фигурировать в INNER JOIN-присоединении (по всем полям, подлежащим сравнению на совпадение) к таблице t1, а у тебя жто присоединение напрочь отсутствует.
Вот Access и предполагает, что ты в запросе указывает имена параметров.

Т.е. статья WHERE здесь никомим образом фигурировать не должна, а вместо нее должно быть INNER JOIN t2 ON .. и далее вся та петрушка, которая у тебя фигурирует в выражении для WHERE-статьи.


 
pavel_guzhanov ©   (2009-12-18 14:58) [3]


> 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

получаю сообщение, что надо указать таблицу, содержащую удаляемые записи.


 
sniknik ©   (2009-12-18 15:06) [4]

> написал вот так -
по моему так нужно, если правильно помню
delete t1.* from t1
...


 
sniknik ©   (2009-12-18 15:12) [5]

> Т.е. статья WHERE здесь никомим образом фигурировать не должна,
да в общем то по большому счету это одно и тоже, с inner просто более однозначные запросы получаются (имхо), и более функциональнее (нет в jet синтаксиса +=, =+, и д.р.), а в простых случаях можно и так и так.


 
Anatoly Podgoretsky ©   (2009-12-18 15:12) [6]

> pavel_guzhanov  (18.12.2009 14:09:00)  [0]

Откуда предложение то?
Что то на правду не похоже.
Или ты с Акцессом через COM работаешь?

Формат команды DELETE ты уже конечно в справке посмотрел?



Страницы: 1 вся ветка

Текущий архив: 2011.06.26;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.012 c
15-1298966436
Rouse_
2011-03-01 11:00
2011.06.26
Нужна небольшая помощь в тестировании


15-1299748624
laby
2011-03-10 12:17
2011.06.26
При вызове sp часики убрать


15-1299822781
И. Павел
2011-03-11 08:53
2011.06.26
БД Access не открывается, хотя JET 4.0 установлен


2-1300290965
lewka
2011-03-16 18:56
2011.06.26
Работа с текстом в MS Word


3-1261465889
Lowlander
2009-12-22 10:11
2011.06.26
Перенос связанных таблиц Paradox на другой комп.