Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Стол заказов » Удаление дублей новостей по заголовкам

Удаление дублей новостей по заголовкам


 newage    30.09.2019    Стол заказов    1208    6 комментариев

Нужно написать скрипт для удаления дублей новостей по заголовкам.

Скрипт должен удалять дубли по убыванию (от новых новостей к старым) и оставлять самую старую (первую) новость.

Версия DLE: 13.2

Оплата по договоренности.

6 комментариев

dj-avtosh
PHP-developer

dj-avtosh - 30 сентября 2019 17:13 -

Сделать бэкап, потом сделать:

DELETE t1, dpe FROM dle_post t1 
JOIN dle_post t2 ON (t1.title = t2.title AND t1.id > t2.id)
LEFT JOIN dle_post_extras dpe ON (dpe.news_id = t1.id)

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

dj-avtosh
PHP-developer

dj-avtosh - 30 сентября 2019 17:15 -

Можно еще добавить удаление связей из таблиц:
dle_post_extras_cats
dle_post_log
dle_post_pass

Будет так:

DELETE t1, dpe, dpec, dpl, dpp FROM dle_post t1 
JOIN dle_post t2 ON (t1.title = t2.title AND t1.id > t2.id)
LEFT JOIN dle_post_extras dpe ON (dpe.news_id = t1.id)
LEFT JOIN dle_post_extras_cats dpec ON (dpec.news_id = t1.id)
LEFT JOIN dle_post_log dpl ON (dpl.news_id = t1.id)
LEFT JOIN dle_post_pass dpp ON (dpp.news_id = t1.id)

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

newage
Юзер

newage - 30 сентября 2019 17:55 -

dj-avtosh,
большое Вам спасибо. Доберусь домой, попробую.

dj-avtosh
PHP-developer

dj-avtosh - 30 сентября 2019 17:58 -

Но сперва бэкап БД.

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

newage
Юзер

newage - 30 сентября 2019 22:03 -

dj-avtosh,
Супер! Все получилось. После обработки запроса новостей стало меньше на 700 шт (дублей). Для проверки брал несколько дублей, где было даже по три новости одинаковых. И все четко: после запроса, осталась только первая (самая ранняя), остальные две, более поздние удалились.

Огромное Вам человеческое спасибо!

P.S.: Для тех кто будет также чистить базу, учтите, что если база большая, MySQL может обрабатывать запрос довольно долго. У меня на данный момент 15 тыс. новостей, обработка шла примерно 7 мин.

dj-avtosh
PHP-developer

dj-avtosh - 30 сентября 2019 23:18 -

Долго только из-за связанных таблиц, можно 15к смело на 3 умножать, а то и больше.

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

Чтобы комментировать - войдите или зарегистрируйтесь на сайте
наверх