Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.036 c
14-1088497996
cyborg
2004-06-29 12:33
2004.07.25
RoboWarz2


1-1089238481
Zvr@b
2004-07-08 02:14
2004.07.25
Как задать диапазон для Random?


4-1086352639
Kair
2004-06-04 16:37
2004.07.25


14-1089217266
ALex191261
2004-07-07 20:21
2004.07.25
Как можно заблокировать клавиатура.


1-1089285803
Tom
2004-07-08 15:23
2004.07.25
Oсвобождение критической секции





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский