Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Сопоставление таблиц (MS Access 2003)
 
 автор: srg55   (21.01.2009 в 08:58)   личное сообщение
 
 

В базе есть 2 таблицы - для примера: таб1 и таб2. необходимо проверить таб1 на наличие полей из таб2 и в случае совпадения сменить статус у поля в таб1. Пример:

  таб1:                             |          таб2:
бланк                 статус        |          бланк
ААА0123456789           1           |      0123456789
ВВВ0006543211           1           |        6543211
.....


как видно из примера записи могут отличаться, например в таб2 может не присутствовать серия бланка или отсутствовать нули перед номером, но значение из таб2 будет целиком ВСЕГДА присутствовать в таб 1 и только 1 раз, т.к. номер бланка является уникальным. Таким образом задача следующая: скопировать значение номера из таб2, отыскать его в таб1 и сменить у этой записи статус на 2, после этого в таб2 поставить отметку, что запись обработана. Количество записей в каждой из таблиц достигаеть десятков тысяч... Как это реализовать максимально эфективно? Спасибо.

  Ответить  
 
 автор: osmor   (21.01.2009 в 09:47)   личное сообщение
 
 

Запрос поменяет поле статус в таб1 для всех записей для которых "хвост" совпадает

UPDATE таб1 INNER JOIN таб2 ON  right(таб1.бланк,len(таб2.бланк)) = таб2.бланк  SET таб1.статус = 2;


Только в этом случае
бланку ААА0123456789 соотвтсвует как 0123456789, так и бланк 6789 и бланк 89

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList