Конференция "Базы" » Удаление записей в access [access 2003]
 
  • pavel_guzhanov © (18.12.09 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 © (18.12.09 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]
  • Сергей М. © (18.12.09 14:23) [2]
    > я ведь в запросе не использую параметров

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

    Т.е. статья WHERE здесь никомим образом фигурировать не должна, а вместо нее должно быть INNER JOIN t2 ON .. и далее вся та петрушка, которая у тебя фигурирует в выражении для WHERE-статьи.
  • pavel_guzhanov © (18.12.09 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 © (18.12.09 15:06) [4]
    > написал вот так -
    по моему так нужно, если правильно помню
    delete t1.* from t1
    ...
  • sniknik © (18.12.09 15:12) [5]
    > Т.е. статья WHERE здесь никомим образом фигурировать не должна,
    да в общем то по большому счету это одно и тоже, с inner просто более однозначные запросы получаются (имхо), и более функциональнее (нет в jet синтаксиса +=, =+, и д.р.), а в простых случаях можно и так и так.
  • Anatoly Podgoretsky © (18.12.09 15:12) [6]
    > pavel_guzhanov  (18.12.2009 14:09:00)  [0]

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

    Формат команды DELETE ты уже конечно в справке посмотрел?
 
Конференция "Базы" » Удаление записей в access [access 2003]
Есть новые Нет новых   [134435   +33][b:0][p:0]