Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
13 / 13 / 11
Регистрация: 03.09.2011
Сообщений: 1,026
1

Поиск дублей

11.03.2014, 22:22. Показов 1643. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Допустим есть база: ID Fam Name Otch
мне нужно найти ID, где Fam Name Otch дублируется, т.е к примеру
ID Fam Name Otch
1 Fam1 Name1 Otch1
2 Fam2 Name2 Otch2
3 Fam1 Name1 Otch1

Записи в ID 1 и 3 полностью дублируется, и вот мне надо такие IDшники получить.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.03.2014, 22:22
Ответы с готовыми решениями:

Поиск дублей с выводом их id
Здравствуйте. Есть таблица в access которая содержит поля: ID, name Хочу найти дубликаты по...

"Расширенный" поиск дублей по базе
Всем добрый день! Есть таблица в базе данных Access примерно след. содержания: ID...

Объединение дублей
Здравствуйте! Я знаю что начинаю вам надоедать, но у меня просто безвыходная ситуация... Постараюсь...

Объединение дублей в таблицах
Всем привет! Мне нужна ваша помощь... Есть две БД с одинаковыми таблицами и формами. Просто данные...

6
Эксперт MS Access
26806 / 14485 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
11.03.2014, 23:21 2
SQL
1
2
3
4
SELECT ID & "|" & Fam & "|" & [Name] & "|" & Otch AS groupFld, COUNT(*) AS kol
FROM Таблица
GROUP BY ID & "|" & Fam & "|" & [Name] & "|" & Otch
HAVING COUNT(*)>1
На большой таблице может работать медленно



Второй вариант. Должен быть побыстрее
SQL
1
2
3
4
5
6
SELECT t1.ID, t1.Fam, t1.[Name], t1.Otch, COUNT(*) AS kol
FROM (SELECT DISTINCT ID, Fam, [Name], Otch FROM Таблица) t1 
  INNER JOIN Таблица t2 ON t1.ID=t2.ID AND t1.Fam=t2.Fam AND t1.[Name]=t2.[Name] AND t1.Otch=t2.Otch
GROUP BY t1.ID, t1.Fam, t1.[Name], t1.Otch
HAVING COUNT(*)>1
ORDER BY COUNT(*) DESC
1
1302 / 508 / 63
Регистрация: 09.08.2012
Сообщений: 2,056
11.03.2014, 23:49 3
Цитата Сообщение от mobile Посмотреть сообщение
& "|" &
А для чего при сцепке еще этот знак включаете, подскажите?
0
13 / 13 / 11
Регистрация: 03.09.2011
Сообщений: 1,026
12.03.2014, 00:09  [ТС] 4
mobile, а как можно еще удалить дублирующие записи.
Т.е вот в мое примере записи с ID 1 и 3 дублируются. Надо удалить все дубли и оставить 1 уникальную запись.
0
Эксперт MS Access
26806 / 14485 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
12.03.2014, 01:35 5
Цитата Сообщение от emenem97 Посмотреть сообщение
А для чего при сцепке еще этот знак включаете, подскажите?
Для защиты от случайных совпадений. Проще обяснить на числовых полях. Например есть такая табличка

Поле1Поле2
123456
123456

При конкатенации без разделителя эти 2 записи будут идентичны 123456. Если же поставить разделитель полей, то первая запись 123|456, а вторая 1234|56. Получаются совершенно разные строки и риск случайных совпадений сведен к нулю.



Добавлено через 12 минут
Цитата Сообщение от iluxa1810 Посмотреть сообщение
а как можно еще удалить дублирующие записи.
Проще всего в Вашем случае сделать 3-я запросами.
1. Сохраняем результат запроса во временную табличку TempTable
SQL
1
2
3
4
5
SELECT t1.ID, t1.Fam, t1.[Name], t1.Otch INTO TempTable
FROM (SELECT DISTINCT ID, Fam, [Name], Otch FROM Таблица) t1 
  INNER JOIN Таблица t2 ON t1.ID=t2.ID AND t1.Fam=t2.Fam AND t1.[Name]=t2.[Name] AND t1.Otch=t2.Otch
GROUP BY t1.ID, t1.Fam, t1.[Name], t1.Otch
HAVING COUNT(*)>1
2. Удаляем все дубли из основной таблицы
SQL
1
2
3
DELETE * 
FROM Таблица t1 
  INNER JOIN TempTable t2 ON t1.ID=t2.ID AND t1.Fam=t2.Fam AND t1.[Name]=t2.[Name] AND t1.Otch=t2.Otch
3. Восстанавливаем записи основной таблицы из TempTable
SQL
1
2
INSERT INTO Таблица (ID, Fam, [Name], Otch)
SELECT ID, Fam, [Name], Otch FROM TempTable
Перед удалением, на всякий случай сделайте дубль основной таблицы
1
1302 / 508 / 63
Регистрация: 09.08.2012
Сообщений: 2,056
12.03.2014, 07:14 6
Цитата Сообщение от mobile Посмотреть сообщение
Для защиты от случайных совпадений
Спасибо и правда. На работе довольно часто в своих инструментах сцепку использую, придется переделывать теперь
0
138 / 29 / 2
Регистрация: 24.09.2013
Сообщений: 59
12.03.2014, 09:09 7
просмотр дублей
SQL
1
2
SELECT t1.ID,t1.Fam,t1.[Name],t1.Otch FROM Таблица t1 INNER JOIN  Таблица t2 ON  t1.Fam=t2.Fam AND t1.Name=t2.Name AND t1.Otch=t2.Otch
WHERE  t1.ID<>t2.ID
Добавлено через 10 минут
Если дубли не допускаются, добавь в таблицу уникальный индекс по этим трём полям.
0
12.03.2014, 09:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.03.2014, 09:09
Помогаю со студенческими работами здесь

Удаление дублей по определенному полю\составу полей в БД
Доброго времени суток! Подскажите формат запроса к БД access+vba который будет выводить и потом...

Подчииненная форма (табличный режим). Контроль за отсутствием дублей всей строки
И снова здрасте :) . Столкнулся со следующей задачей, которую сам решить не в состоянии (БД во...

Удаление дублей
Как с наименьшей трудоемкостью удалить дубли из таблицы InterBase. Т.е. имеем пары строк с...

Поиск дублей
Есть ли способ поиска дублирующих значений в System.Xml. Создание дублей есть а поиска я что то не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru