помогите с запросом на VB6

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
bashobn
Начинающий
Начинающий
 
Сообщения: 16
Зарегистрирован: 25.05.2008 (Вс) 10:37

помогите с запросом на VB6

Сообщение bashobn » 25.03.2009 (Ср) 14:13

Здравствуйте!
В общем ситуация такая:
есть база данных s2 (dbf),
в нее добавляются данные из ss2 (dbf),
вопрос: как сделать так, чтобы повторяющиеся записи не добавлялись?
я делаю так:

Код: Выделить всё
conn.ConnectionString = "DRIVER={Microsoft dBase Driver (*.dbf)};" & "DBQ=" & s & ";" & "DefaultDir=" & s & "\"
conn.Open
conn.Execute "INSERT INTO [" & s2 & "] select [" & ss2 & "].* from [" & ss2 & "] UNION"


знаю, что что-то не то. А что не знаю.

И второй вопрос: как можно вычислить запросом дубликаты записей в dbf?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: помогите с запросом на VB6

Сообщение alibek » 25.03.2009 (Ср) 17:15

Я бы советовал перегнать данные в mdb и работать там.
Или, в крайнем случае, прилинковать dbf-файлы к mdb; это помогает не со всеми глюками, но все-же лучше, чем работать через ODBC.

Что касается вопроса, то ты не указал критерии уникальности записей.
Lasciate ogni speranza, voi ch'entrate.

bashobn
Начинающий
Начинающий
 
Сообщения: 16
Зарегистрирован: 25.05.2008 (Вс) 10:37

Re: помогите с запросом на VB6

Сообщение bashobn » 26.03.2009 (Чт) 7:42

то есть нужно сделать приблизительно так:

Код: Выделить всё
INSERT INTO [" & s2 & "] select [" & ss2 & "].* from [" & ss2 & "] UNION select [" & s2 & "].* from [" & s2 & "]"


?

и ещё вопрос: на дубликаты пользуюсь запросом

conn.Execute "select distinct [" & s2 & "].* INTO [main_clean] from [" & s2 & "]"

начинает работать, пишет, что нежнватает места на временном диске. Вопрос где он и как его увеличить?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: помогите с запросом на VB6

Сообщение alibek » 26.03.2009 (Чт) 13:53

alibek писал(а):Что касается вопроса, то ты не указал критерии уникальности записей.
Lasciate ogni speranza, voi ch'entrate.

bashobn
Начинающий
Начинающий
 
Сообщения: 16
Зарегистрирован: 25.05.2008 (Вс) 10:37

Re: помогите с запросом на VB6

Сообщение bashobn » 26.03.2009 (Чт) 14:23

а как их указать?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: помогите с запросом на VB6

Сообщение alibek » 26.03.2009 (Чт) 14:31

Это был вопрос тебе, вообще-то.
Lasciate ogni speranza, voi ch'entrate.

bashobn
Начинающий
Начинающий
 
Сообщения: 16
Зарегистрирован: 25.05.2008 (Вс) 10:37

Re: помогите с запросом на VB6

Сообщение bashobn » 27.03.2009 (Пт) 6:36

Извини, понял... В общем критерий уникальности-это вся строка!

То есть если в таблице она есть, то такая же уже не добавляется в нее...
Пример: есть обновляемая база. обновляется каждую неделю. запрос идет с пятницы по пятницу. И вот этот запрос нужен, чтобы дубликатов не было....
Таблица и так 2ГБ весит (сжата, пометок на удаление нет, 5 млн записей)

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: помогите с запросом на VB6

Сообщение alibek » 27.03.2009 (Пт) 13:01

Если критерий уникальности — вся строка, значит база спроектирована неверно.
Но в любом случае структурно запрос будет иметь вид:
Код: Выделить всё
--обновление
update s2
set ...
from s2 join ss2 on <expr>

--добавление
insert into s2
select ss2
where not <expr>

где expr — выражение, определяющее ключ таблицы.
Lasciate ogni speranza, voi ch'entrate.


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 15

    TopList