HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > ПРОГРАММИРОВАНИЕ > PHP
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #11  
Старый 17.12.2008, 19:27
VDShark
Участник форума
Регистрация: 01.02.2007
Сообщений: 286
Провел на форуме:
804931

Репутация: 526
По умолчанию

Можно написать хп.
Получится нечто вродь такого

Код:
delimiter ;;
CREATE PROCEDURE cl()
BEGIN
  DECLARE done INT DEFAULT 0;
  DECLARE s VARCHAR(100);  
  DECLARE cur CURSOR FOR SELECT DISTINCT SUBSTRING_INDEX(`title`,' ',2) FROM `table`;
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
  OPEN cur;
  REPEAT
    FETCH cur INTO s;
    DELETE FROM `table` WHERE `id` IN (SELECT `t1`.`id` FROM (SELECT * FROM `table`) as `t1` WHERE `t1`.`title` LIKE CONCAT(s,'%') AND `id` <> (SELECT `t2`.`id` FROM (SELECT * FROM `table`) as `t2` WHERE `t2`.`title` LIKE CONCAT(s,'%') LIMIT 1));
  UNTIL done END REPEAT;
END;;
Вызывается хп так:
Код:
call cl()
где cl - эт имя нашей поцедуры.

Объясним некоторые специфические моменты:
  1. SUBSTRING_INDEX(`title`,' ',2) - это по сути то, сколько ведущих слов нам брать. Слова разделяются пробелами. Например если этот код применить к строке "Перевозчик 3 Transporter 3 (2008) TS" получим "Перевозчик 3"
  2. FROM (SELECT * FROM `table`) - такой финт ушами понадобился всвязи с некоторыми особенностями мускула
  3. CONCAT(s,'%') - соответственно объединяем получанную нами из курсора строку со знаком % для составления шаблона.

Может код неоптимален и тд и тп - но он будет работать Если найдешь что оптимизировать - оптимизируй.

P.S. На достаточно большой базе при слабой машине - вполне можешь повесить субд. Или выполнение может занять продолжительное время.
 
Ответить с цитированием
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Cоздание своей nulled CMS на примере DLE SchmeL Статьи 17 19.04.2009 14:21
Шаблоны для форумов и Cms lisa99 ПО для Web разработчика 4 22.02.2009 14:27
База 8000 новостей под Dle *DeViL* ПО для Web разработчика 7 22.08.2008 23:17
DataLife Engine v.7.0 Nulled *DeViL* ПО для Web разработчика 3 04.05.2008 14:36



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ