Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Удаление одинаковых записей в таблице 
:(
    Опции темы
_Nick_
Дата 9.8.2007, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 21.11.2006

Репутация: нет
Всего: нет



У меня есть таблица tab.db, в ней поля zap1, zap2, zap31, zap32, zap4, zap5
как мне из этой таблицы удалить однаковые строки записей, например SQL запросом? Одинаковыми записями считать только те у которых значения во всех полях совпадут
PM MAIL   Вверх
belousov
Дата 9.8.2007, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 317
Регистрация: 21.11.2006
Где: Москва

Репутация: нет
Всего: 6



_Nick_, а группировкой? она их просто скроет или именно удалять?


--------------------
NIHIL VERUM EST LICET OMNIA 
PM MAIL WWW ICQ Skype   Вверх
_Nick_
Дата 9.8.2007, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 21.11.2006

Репутация: нет
Всего: нет



мне все равно как от них избавиться smile 

Это сообщение отредактировал(а) _Nick_ - 9.8.2007, 17:08
PM MAIL   Вверх
ALeXandrK
Дата 9.8.2007, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 342
Регистрация: 31.1.2007
Где: Санкт-Петербург

Репутация: 2
Всего: 6



Если тебе избавиться совсем, то
Код

DELETE *
FROM Название_Таблицы
WHERE (Zap1=Zap2) and (Zap1=Zap3) and (Zap1=Zap4) and (Zap1=Zap5);


Если нужно только отображение, то
Код

SELECT *
FROM Название_Таблицы
Group By Zap1;




--------------------
Богат не/ни тот, у кого много, а тот, кому хватает
PM WWW   Вверх
_Nick_
Дата 9.8.2007, 21:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 21.11.2006

Репутация: нет
Всего: нет



Цитата(ALeXandrK @ 9.8.2007,  18:56)
Если тебе избавиться совсем, то
Код

DELETE *
FROM Название_Таблицы
WHERE (Zap1=Zap2) and (Zap1=Zap3) and (Zap1=Zap4) and (Zap1=Zap5);


Если нужно только отображение, то
Код

SELECT *
FROM Название_Таблицы
Group By Zap1;

Неработает, первый запрос вообще ничего не делает, а второй ошибку выдает на FROM в тексте ошибки ругаеться
PM MAIL   Вверх
ALeXandrK
Дата 9.8.2007, 23:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 342
Регистрация: 31.1.2007
Где: Санкт-Петербург

Репутация: 2
Всего: 6



C группировкой я поторопился.....
Держи удаление:
Код

DELETE *
FROM Название_Таблицы
WHERE (Zap1=Zap2=Zap3=...);


Проверено работает.
После FROM нужно указывать название таблицы (как она у тебя называется
известно только тебе).
tab.db - это не название таблицы, а название базы.

P.s.: надеюсь поля у тебя из одной таблицы smile 

Это сообщение отредактировал(а) ALeXandrK - 10.8.2007, 00:01


--------------------
Богат не/ни тот, у кого много, а тот, кому хватает
PM WWW   Вверх
Savek
Дата 10.8.2007, 08:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 355
Регистрация: 10.4.2006
Где: Воронеж

Репутация: 7
Всего: 7



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

Ждем подробностей от автора...
PM MAIL   Вверх
Vas
Дата 10.8.2007, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 830
Регистрация: 29.6.2005
Где: Stavropol region

Репутация: 23
Всего: 28



А хоть ключик уникальный то есть в таблице? Если ключа нет то никак вы не сможете удалить дубликат записи запросом, оставив при этом "оригинал" записи
Код

delete from tab.db
where id not in (select max(id) from tab.db group by zap1, zap2, zap31, zap32, zap4, zap5)



--------------------
И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин)
PM MAIL   Вверх
DimW
Дата 10.8.2007, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1330
Регистрация: 24.2.2005
Где: Орёл

Репутация: 5
Всего: 44



если нет ключика то можно создать еще одно поле и проставить в него уникальные занчения тогда пример 
Vas, будет работать.

еще как вариант:
перенести уникальные записи в другую таблицу:
Код

insert into новая_таблица
(select distinct zap1, zap2, zap31, zap32, zap4, zap5 from твоя_таблица)


затем удалить все записи из старой таблицы и перенести данные в старую таблицу из новой, новую удалить.
имхо первое проше.

Цитата(ALeXandrK @  9.8.2007,  23:59 Найти цитируемый пост)
tab.db - это не название таблицы, а название базы.

если база парадокс то как раз таки таблица, а базой для парадокс является папка в которой валяются db-файлы  


Это сообщение отредактировал(а) DimW - 10.8.2007, 12:13
PM MAIL ICQ   Вверх
ALeXandrK
Дата 10.8.2007, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 342
Регистрация: 31.1.2007
Где: Санкт-Петербург

Репутация: 2
Всего: 6



Цитата

Цитата

Цитата(ALeXandrK @  9.8.2007,  23:59 )
tab.db - это не название таблицы, а название базы.


если база парадокс то как раз таки таблица, а базой для парадокс является папка в которой валяются db-файлы  


Уже давно с парадокс не работал... совсем забыл об этом smile 

Цитата

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

Ждем подробностей от автора...


Ни все поля, а только указанные в запросе.
Автор уже написал, что ему нужно...
Цитата

Одинаковыми записями считать только те у которых значения во всех полях совпадут



--------------------
Богат не/ни тот, у кого много, а тот, кому хватает
PM WWW   Вверх
_Nick_
Дата 10.8.2007, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 21.11.2006

Репутация: нет
Всего: нет



еще как вариант:
перенести уникальные записи в другую таблицу:
Код

 insert into новая_таблица
(select distinct zap1, zap2, zap31, zap32, zap4, zap5 from твоя_таблица)

Так не работало, выдавало ошибку смудрил вот так:
Код

insert into tab1.db (zap1, zap2, zap31, zap32, zap4, zap5) select distinct zap1,zap2, zap31,zap32,zap4, zap5 from tab.db

Работает, но тупо переносит все записи из одной базы в другую, грубо говоря копирует, и все без всяких изменений, хотя поидее должно было лишее не переносить, мож я чет не так делаю???
ALeXandrK, я имел ввиду, одинаковыми записями считать если все поля 1 записи полностью совпадают с такими же полями 2 записи smile , а не если все поля одинаковые то наф такую запись smile 
Если с переносом без повторов ничего не получиться, придеться попробовать то что предложил DimW
 

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0517 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.