![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Приветствую Мастеров ! Как удалять одинаковые строки в базе? [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]Удалено модератором