Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Приветствую Мастеров ! Как удалять одинаковые строки в базе? [D5, dBase, FoxPro]


IronHawk ©   (2002-03-29 15:48:00) 

Сабж !

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


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;


IronHawk   (2002-04-02 13:17:00) [1]

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

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


IronHawk   (2002-04-02 10:51:00) [2]


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

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

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

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


IronHawk   (2002-04-02 10:35:00) [3]


> Lusha © (02.04.02 09:50)

Спасибо !

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

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


Lusha   (2002-04-02 09:50:00) [4]

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


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-01 18:15:00) [5]


> Reindeer Moss Eater (01.04.02 17:38)

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

> panov © (01.04.02 18:05)

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


panov   (2002-04-01 18:05:00) [6]

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


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


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;


IronHawk   (2002-04-01 16:54:00) [8]


> Lusha ©

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


> kan351 ©

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


kan351   (2002-04-01 16:16:00) [9]

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


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

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

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


IronHawk   (2002-04-01 12:12:00) [11]


> Johnmen ©

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


Johnmen   (2002-04-01 10:59:00) [12]

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


IronHawk   (2002-04-01 10:42:00) [13]

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


IronHawk   (2002-03-29 17:15:00) [14]


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

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



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


Anatoly Podgoretsky   (2002-03-29 17:08:00) [15]

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


IronHawk   (2002-03-29 17:05:00) [16]


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

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


vopros   (2002-03-29 16:29:00) [17]

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


Anatoly Podgoretsky   (2002-03-29 16:28:00) [18]

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


vopros   (2002-03-29 16:12:00) [19]

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо