Форум: "Базы";
Текущий архив: 2004.07.25;
Скачать: [xml.tar.bz2];
Внизработа с БД Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.54 MB
Время: 0.041 c