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

Вниз

работа с БД   Найти похожие ветки 

 
Jann ©   (2004-07-02 12:12) [0]

Помогите!
Есть БД с несколькими строчками данных и после каждой такой строчки следует дублирование этой же строки. Как удалить те строчки которые повторяются.


 
Курдль ©   (2004-07-02 12:14) [1]

Я бодро начал писать запрос, но потом затупил...
А кто такую базу мог придумать? :)


 
Reindeer Moss Eater ©   (2004-07-02 12:14) [2]

Метод delete


 
Соловьев ©   (2004-07-02 12:16) [3]

http://www.ibase.ru/devinfo/deldupes.htm


 
Jann ©   (2004-07-02 12:33) [4]

Может Вы не поняли.
Например есть БД mk.dbf с полем "fam". И в этой таблице идут записи:

Петров
Петров
Петров
Сидоров
Мишин
Мишин

Так вот как избавится от повторяющихся записей???


 
Danilka ©   (2004-07-02 12:35) [5]

а еще там есть какие-нибудь поля?


 
Соловьев ©   (2004-07-02 12:35) [6]


> Так вот как избавится от повторяющихся записей???

в запросе?
distinct, group - надо смотреть по ситуации


 
Reindeer Moss Eater ©   (2004-07-02 12:37) [7]

Так вот как избавится от повторяющихся записей???

Удалить их! Как же еще?


 
Курдль ©   (2004-07-02 12:39) [8]


> Jann ©   (02.07.04 12:33) [4]
> Может Вы не поняли.

Естественно не поняли! Ты уж определись, записи в базе одинаковые, или значения некоторых полей!


 
Jann ©   (2004-07-02 12:39) [9]

Удалить то удалить, но каким образом? Я просто таких вещей еще не разу не делал не скупитесь на совет подскажите!!


 
Reindeer Moss Eater ©   (2004-07-02 12:40) [10]

Удалить то удалить, но каким образом?

Одним.
TDataset.Delete


 
Соловьев ©   (2004-07-02 12:42) [11]


> не делал не скупитесь на совет подскажите!!

[3] - чем не устраивает?


 
Курдль ©   (2004-07-02 12:42) [12]


> Reindeer Moss Eater ©   (02.07.04 12:40) [10]
> Удалить то удалить, но каким образом?
>
> Одним.
> TDataset.Delete

Не согласен! Если надо удалить много записей, согласно какому-то критерию, лучше сделать запрос и тогда Query.ExecSQL!


 
Danilka ©   (2004-07-02 12:43) [13]

[11] Соловьев ©   (02.07.04 12:42)
Дык, у него ДБФ-ка, скорее всего без ПК, а возможно вообще без индексов. :))


 
Reindeer Moss Eater ©   (2004-07-02 12:44) [14]

Не согласен!

С тем что TDataset.Delete удалит записи?

Почему не удалит?


 
Jann ©   (2004-07-02 12:52) [15]

Да ты прав Danilka у меня только dbf-ка как ты выразился. Ребята прийдите наконец к какому-нибудь знаменателю плиз!!!


 
Reindeer Moss Eater ©   (2004-07-02 12:54) [16]

Удали записи методом TDataset.Delete


 
Курдль ©   (2004-07-02 12:54) [17]


> Jann ©   (02.07.04 12:52) [15]
> Да ты прав Danilka у меня только dbf-ка как ты выразился.
> Ребята прийдите наконец к какому-нибудь знаменателю плиз!!!

А ты нам в этом помочь не хочешь? Привел бы хоть структуру таблицы!


 
Jann ©   (2004-07-02 13:06) [18]

Я же ее уже приводил как пример, ну есть там поля или нет какая разница, ведь они также повторяются, как в поле которое я уже показывал ранее на примере.


 
Соловьев ©   (2004-07-02 13:08) [19]

INSERT INTO "new.dbf"
SELECT distinct(*)
FROM "old.dbf"


 
Курдль ©   (2004-07-02 13:09) [20]


> Jann ©   (02.07.04 13:06) [18]
> Я же ее уже приводил как пример, ну есть там поля или нет
> какая разница, ведь они также повторяются, как в поле которое
> я уже показывал ранее на примере.

Есть записи, у которых все-все поля имеют идентичные значения?

Тогда всю базу чнести нах, учить теорию БД и писать заново.


 
Jann ©   (2004-07-02 13:16) [21]

Уважаемый Курдль бросаться такими крутыми выражениями может каждый, а конкретно ответить может не каждый. Ладно давайте так у меня есть БД DAT с помощью запроса я переношу необходимые мне данные в таблицу DBF, но при этом происходид вот такая штука с повторением записей, т.к. в БД DAT они тоже повторяются. Вот я и хотел убрать эти записи уже в получившейся БД DBF причем не трогать БД DAT вообще.


 
Курдль ©   (2004-07-02 13:19) [22]

Jann ©   (02.07.04 13:16) [21]
Ты готов ответить на вопросы, которые мы вынуждены будем задать тебе в попытках помочь?
Типа, как объявлен первичный ключ, какие индексы, есть ли уникальные? Или все же сначала почитаешь хоть что-то про БД?


 
Reindeer Moss Eater ©   (2004-07-02 13:20) [23]

Какой нафиг первичный ключ у DBF и тем более у DBF Джана?

Оставте вы чела в покое.


 
Anatoly Podgoretsky ©   (2004-07-02 13:24) [24]

Сказали Delete больше ничего тебе не поможет


 
Reindeer Moss Eater ©   (2004-07-02 13:24) [25]

Ладно давайте так у меня есть БД DAT с помощью запроса я переношу

Не пиши свой запрос так, что бы туда попадало то, чего тебе не надо.
Текст его, кстати, уже нарисовали здесь.


 
Anatoly Podgoretsky ©   (2004-07-02 13:27) [26]

Reindeer Moss Eater ©   (02.07.04 13:24) [25]
Запросом у него не получится, у него явно не повторящиеся строки.
Точно сказать нельзя, поскольку он как партизан на допросе, знаю но не скажу


 
sniknik ©   (2004-07-02 13:32) [27]

> Текст его, кстати, уже нарисовали здесь.
если имется в виду [19] то как быть если показаное поле единственное что повторяется?
не, без дополнительной инфы(наводящих вопросов) не получится.


 
Reindeer Moss Eater ©   (2004-07-02 13:40) [28]

Я вот что думаю.
Если бы никто не стал возражать на ответ про метод Delete данный на вопрос о том "как удалить", то мы бы уже давно услышали от автора какие именно записи он считает дубликатами.
Соответственно и конкретный SQL был бы рожден.


 
Jann ©   (2004-07-02 13:43) [29]

Да сколько можно повторять. Вот вам примерная таблица:
поля: "fam","im","ot";
содержимое после запроса:
Петров Иван Иванович
Петров Иван Иванович
Петров Иван Иванович
Смирнов Олег Петрович
Шукшин Иван Федорович
Шукшин Иван Федорович

Как в это таблице оставить только по одной строке для каждой фамилии??? Так понятней будет!!! А то молчу, молчу. Просто спрашивать нужно корректно, а не как некоторые. Я конечно же не гуру в Delphi, поэтому и обратился к вам, расчитывая на квалифицированную помощь.


 
Reindeer Moss Eater ©   (2004-07-02 13:45) [30]

select distinct(*) from table

Запрос для имопорта


 
Reindeer Moss Eater ©   (2004-07-02 13:46) [31]

Просто спрашивать нужно корректно, а не как некоторые.

Воистину


 
Danilka ©   (2004-07-02 13:47) [32]

[29] Jann ©   (02.07.04 13:43)
тока 3 варианта:
1. в цикле пройтись по всем записям и удалить дубли
2. запросом [19] скопировать в новую таблицу, затем переписать ее заместо старой
3. изначально из "БД DAT" забрать только неповторяющиеся записи.


 
Danilka ©   (2004-07-02 13:48) [33]

п. 3. = [30] Reindeer Moss Eater ©   (02.07.04 13:45)


 
Reindeer Moss Eater ©   (2004-07-02 13:49) [34]

Щас скажет в ответ на п.3 , что неполчаецца, так как там не три поля, а больше. И Иван Шукшин раздвояецца.


 
Anatoly Podgoretsky ©   (2004-07-02 13:52) [35]

Jann ©   (02.07.04 13:43) [29]
Для таких данных смотри [30]
Но по вопросу "Как в это таблице оставить только по одной строке для каждой фамилии"
Петров Иван Иванович
Петров Иван Петрович
уже никак


 
sniknik ©   (2004-07-02 13:55) [36]

значится повторяются все
вот теперь можно начинать про движок, какой?
потому как с ADO - Jet для dbf вполне пройдет простое, чтото вроде
SELECT * INTO new FROM (SELECT distinct * FROM old)
получиш новую "чистую от дублей" таблицу, с BDE так не получится, нужно по другому заморачиватся (с индексом и удалением в цикле к примеру).


 
Jann ©   (2004-07-02 13:58) [37]

а если все построено через на ADS


 
Jann ©   (2004-07-02 13:59) [38]

а если все построено через на ADS


 
sniknik ©   (2004-07-02 14:08) [39]

> а если все построено через на ADS
значит прямая дорога к чтению доки по ADS, какие запросы он позволяет, либо тупо(и долго) перебирать варианты, или кто знакомый с ним ответит. либо реализовать цикл с удалением (он от синтаксиса sql не зависит).


 
Danilka ©   (2004-07-02 14:15) [40]

А что такое ADS?



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

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

Наверх




Память: 0.56 MB
Время: 0.051 c
6-1085586234
Алексей
2004-05-26 19:43
2004.07.25
Письмо с вложением


4-1082826122
OSokin
2004-04-24 21:02
2004.07.25
JournalRecord


1-1089357876
cvg
2004-07-09 11:24
2004.07.25
почему нет STEP в цикле FOR???


3-1088495870
lapyri
2004-06-29 11:57
2004.07.25
Как отсортировать данные в DBGrid?


8-1084188673
Никита
2004-05-10 15:31
2004.07.25
Воспризведение DWD