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

Вниз

Приветствую Мастеров ! Как удалять одинаковые строки в базе?   Найти похожие ветки 

 
IronHawk ©   (2002-03-29 15:48) [0]

Сабж !

А так подходит ? :


CurrRecNo:=1;
with TQuery.Create(nil) do
begin
DataBaseName:=Table2.DataBaseName;
SQL.Add("select distinct * from "{" SELECT ID FROM *"}+Table2.TableName);
Open;
while Locate("ID",CurrRecNo,[]) do inc(CurrRecNo);
Close;
Free;
end;


 
vopros ©   (2002-03-29 16:12) [1]

Удалено модератором


 
Anatoly Podgoretsky ©   (2002-03-29 16:28) [2]

distinct говорит от том, что в полученном наборе не будет одинаковых строк


 
vopros ©   (2002-03-29 16:29) [3]

Лучше их туда не давать вставлять.Самый эффективный метод.


 
IronHawk ©   (2002-03-29 17:05) [4]


> vopros © (29.03.02 16:29)
> Лучше их туда не давать вставлять.Самый эффективный метод.

А этот пример обрабатываеться после недатия вставляния !


 
Anatoly Podgoretsky ©   (2002-03-29 17:08) [5]

Тогда зачем его выполнять?


 
IronHawk ©   (2002-03-29 17:15) [6]


> Anatoly Podgoretsky © (29.03.02 17:08)
> Тогда зачем его выполнять?

Для проверки и устранения ошибок предыдущего !



to ALL
... у кого есть дельные предложения ?


 
IronHawk ©   (2002-04-01 10:42) [7]

И как при этом эти данные, не перебрасывать в соседнюю базу, а в этой ЖЕ ?


 
Johnmen ©   (2002-04-01 10:59) [8]

>IronHawk © : Ты воистину неординарный человек и общение с тобой и чтение твоих диалогов доставляет огромнейшую кучу радости !!!!!!!!!!!!!!!


 
IronHawk ©   (2002-04-01 12:12) [9]


> Johnmen ©

Создаём ветку в "Потрепаться" и туда вставляем свои комментарии,
а тут пожалуйста ПО ДЕЛУ !


 
Lusha ©   (2002-04-01 16:12) [10]

Для проверки можно использовать следующий запрос...

select id from table1
group by id
having count(id) > 1;


 
kan351 ©   (2002-04-01 16:16) [11]

попробуй Batchmove(batdelete)


 
IronHawk ©   (2002-04-01 16:54) [12]


> Lusha ©

Спасибо, но неработает !


> kan351 ©

Спасибо, но аналогично > Lusha © (01.04.02 16:12)


 
Reindeer Moss Eater   (2002-04-01 17:38) [13]


var SourceQuery:TQuery;
DestTable:TTable;
begin
SourseQuery.SQL.Text:="Select Distinct(..... From OldTableName";
SourseQuery.Open;
DestTable.TableName:=NewTableName;
DestTable.BatchMove(SourceQuery,batCop);
SourceQuery.Close;
SourceQuery.Database.Execute("Drop table OldTableName");
end;


 
panov ©   (2002-04-01 18:05) [14]

>IronHawk © (29.03.02 15:48)
Ответь на вопрос:
А что ты понимаешь под одинаковыми строками?


 
IronHawk ©   (2002-04-01 18:15) [15]


> Reindeer Moss Eater (01.04.02 17:38)

Круто, сработало !
Но оно накойто, отсортировало мне, а этого низЯ !

> panov © (01.04.02 18:05)

Это когда в таблице из 11 столбцов и 50 строк
есть строки в которых все значениях во всех столбцах одинаковые !


 
Lusha ©   (2002-04-02 09:50) [16]

Ну, тогда попробуйте так...


var Query : TQuery;
begin
Query := TQuery.Create(Self);
Query.SQL.Text := "select field1, field2 ... from table group by field1, field2... having count(field1) > 1"; { вместо многоточия все поля. Да, и никаких запятых перед фразами having и group by, а то опять скажете, что запрос нерабочий}
Query.Open;
with Query do
begin
while not Eof do
begin
if Table.Locate("field1;field2;...", VarArrayOf(FieldByName("Field1").AsString...), []) then
begin
Table.Delete;
Table.Post;
end;
Next;
end;
end;
Query.Free;
end;

P.S. Гм-м. Кошмар. Хотя, какая задача, такое и решение...



 
IronHawk ©   (2002-04-02 10:35) [17]


> Lusha © (02.04.02 09:50)

Спасибо !

> if Table.Locate("field1;field2;...", VarArrayOf(FieldByName("Field1").AsString...),
> []) then

Компилятор это непропускает как масив, исправлю скажу как прошло !


 
IronHawk ©   (2002-04-02 10:51) [18]


> Lusha © (02.04.02 09:50)
> Ну, тогда попробуйте так...

Круто, всё заработало, но опять сортирует :-( !

У меня уже есть 4-типа реально работающего кода, и все сортируют!

А мне сортировки нельзя !!!



 
IronHawk ©   (2002-04-02 13:17) [19]

Всем спасибо !
Трабл урегулирован !

Если появяться глюки обязательно напишу :-))) !



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

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

Наверх




Память: 0.51 MB
Время: 0.011 c
14-69985
Fellomena
2002-03-14 13:04
2002.04.22
VFortran & MultiThreads Applications


14-69987
Sergo
2002-03-14 15:29
2002.04.22
SDL Component Suite


14-70011
VuDZ
2002-03-15 02:50
2002.04.22
Коллеги. улыбайтесь :>


3-69742
KAA
2002-03-27 17:48
2002.04.22
Шахматка 2000


4-70055
Wladimir
2002-02-15 22:38
2002.04.22
Время создания файла.