Перейти к содержимому


Удаление дублей


Сообщений в теме: 2

#1 Александр Пономарев

    Активный участник

  • Пользователи
  • PipPipPip
  • 435 сообщений
  • Пол:Мужчина
  • Город:Таганрог

Отправлено 17 Март 2015 - 22:24

Ищу дублирующиеся ФИО и если статус записи равен 0 (не удалена), просто вывожу в таблице две записи, фильтруя их от остальных. Тут можно удалить вручную дубль. Но дело в том, что он не удаляется физически, а помечается на удаление и при установке требования уникальности записи не позволяет впоследствии сохранять изменения в основной записи, вынуждая каждый раз вручную отключать контроль уникальности, либо вручную же искать его в удаленных и уничтожать физически. Как сделать так, чтобы запись уничтожалась физически?

$n="";
$result = mysql_query ("DELETE FROM КОДТАБЛИЦЫ WHERE status = '2'"); // Физически удаляем помеченных на удаление, чтобы они не дублировали
$objects = data_table("ИМЯТАБЛИЦЫ", " 1=1 ORDER BY `Фамилия Имя Отчество`, `id` DESC", "all");
foreach ($objects as $object) {
  if ($n===$object['Фамилия Имя Отчество']) {
	$url="Location: https://ВАШАБАЗА.clientbase.ru/fields.php?table=НОМЕРТАБЛИЦЫ&fast_search=".$n;
	header($url);
	exit;
  }
  $n=$object['Фамилия Имя Отчество'];
}
echo " Других дубликатов нет! <br>";



КОДТАБЛИЦЫ в моем случае f_data351
ИМЯТАБЛИЦЫ в моем случае русскими буквами
ВАШАБАЗА - это имя вашей базы
НОМЕРТАБЛИЦЫ в моем случае 351

Сообщение отредактировал Александр Пономарев: 17 Март 2015 - 22:26


#2 Tony999

    Активный участник

  • Пользователи
  • PipPipPip
  • 412 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 22 Сентябрь 2015 - 00:45

Представляется, что для обработки емкой базы подойдет такой вариант:

data_delete(70, "`status`!= 0"); // Удаляем все неактивные записи
// Сортируем и перебираем записи по одному полю.
$result=data_select_field(70,"`f590` as art", "`status`= 0 ORDER BY `f590` DESC");
while ($row = sql_fetch_array($result)) {
if ($art == $row['art']) {
//  Останавливаемся, когда находятся одинаковые записи по выбранному полю и выводим их по фильтру
$url="Location: http://youraddress.ru/cb/fields.php?table=70&fast_search=".$art;
header($url); break; }
$art = $row['art'];
}

Сообщение отредактировал Tony999: 22 Сентябрь 2015 - 00:49

Умные сайты на заказ
https://info.crm-master.info

#3 Tony999

    Активный участник

  • Пользователи
  • PipPipPip
  • 412 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 22 Сентябрь 2015 - 00:46

70 - номер таблицы, f590 - номер поля, youraddress.ru/cb/ (подставьте свои значения).
Еще замечу, что выводятся не полные дубликаты, а по маске подстроки в строке.
То есть, например, на слово "Мука" будут выведены и "Мука ржаная", и "Мука пшеничная".
Чтобы получить точное совпадение, надо вместо fast_search ставить что-то другое.
А еще придется много руками поработать, проверяя и удаляя дубликаты.

Сообщение отредактировал Tony999: 22 Сентябрь 2015 - 00:59

Умные сайты на заказ
https://info.crm-master.info





Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных