Здравствуйте VVS, Вы писали:
VVS>Привет всем.
VVS>Пишу прогу на VC++
VVS>Проблема такая:
VVS>есть две таблицы(1-T1,2-T2) одинаковые,со следующими полями Ф,И,О,DATE1,DATE2 .
VVS>1)Требуется добавить в 1 таблицу те строки из 2 таблицы в которых нет в 1 таблице
VVS>(проверка по Ф,И,О).
VVS>2)Также надо обновить DATE2 в 1 таблице из DATE2 2 таблицы
VVS>в тех строках где Ф,И,О 1 таблицы совпадают с Ф,И,О 2 таблицы.
VVS>SQL знаю плохо,вот что я намутил:
VVS>1)INSERT INTO T1 (Ф,И,О,DATE2)
VVS> SELECT Ф,И,О,DATE2 FROM T2 WHERE Ф NOT IN (SELECT DISTINCT Ф FROM T1)
VVS> OR И NOT IN (SELECT DISTINCT И FROM T1)
VVS> OR О NOT IN (SELECT DISTINCT О FROM T1)
VVS>Запрос работает но очень долго(когда в базе 10 000 строк)
VVS>2)UPDATE T1 a ,T2 b SET a.DATE2 =b.DATE2 WHERE a.Ф = b.Ф AND a.И=b.И AND a.О=b.О
VVS>тоже думаю что можно как то оптимизировать,помогите ктонить плиз,
VVS>может ктонибуть сможет в один запрос все засунуть
.
VVS>(отмечу что запрос к ODBC).
VVS>Заранее благодарен.
1) может быть такая штука ускорит запрос
... WHERE 0=(SELECT COUNT(*) FROM T1 WHERE (T2.Ф=T1.Ф) AND (T2.И=T1.И) AND (T2.О=T1.О))