Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Удалить старые записи из mysql
 
 автор: ShadowXak   (23.06.2011 в 13:05)   письмо автору
 
 

Доброго дня вот назрел такой вопрос
Имеется таблицы со структурой:
id - индефикатор
user - пользователь (числовое)
title - заголовок новости
textnew - текст новости
---
каждый день добавляется куча новостей, но требуется оставлять только 20 последних каждого пользователя, остальные необходимо удалять, вот что то никак не могу придумать как такое реализовать, выводить последнии 20 не вариант, т.к. база разрастается и начинает шевелится еле еле

  Ответить  
 
 автор: Valick   (23.06.2011 в 13:14)   письмо автору
 
   для: ShadowXak   (23.06.2011 в 13:05)
 

ну лично я бы удалять не стал, а допустим отправлял в архив, но вам виднее
я бы сделал так
при вы борке новостей от определенного пользователя определял бы время добавления 20-той записи (естественно к верху ногами) и удалял бы все записи что старше этой.

  Ответить  
 
 автор: ShadowXak   (23.06.2011 в 13:50)   письмо автору
 
   для: Valick   (23.06.2011 в 13:14)
 

Архивирование не подходит т.к. просто тупо не нужны данные тексты вообще, а если класть в архив будит такая же кака с размером бд и тормазами.
---
в день пользователь может добавить 1 новость, а может 100 или 1000, а может месяц и более не добавлять. Но нужно именно оставлять не больше 20 последних добавленных материалов.
С датой не проканает как вы уже поняли из вышеописанного.

  Ответить  
 
 автор: Valick   (23.06.2011 в 13:56)   письмо автору
 
   для: ShadowXak   (23.06.2011 в 13:50)
 

почему не прокатывает? очень даже прокатывает, а если поле даты TIMESTAMP то вообще шикарно прокатывает

а если класть в архив, то это будет самый настоящий архив в полном смысле слова, бд может и будет расти, но вот обращения к данной таблице будут редкими "по-праздникам" и на общей скорости работы это никак не отразиться, только малость дискового пространства кушать будет, но это совсем не страшно.

  Ответить  
 
 автор: ShadowXak   (23.06.2011 в 14:46)   письмо автору
 
   для: Valick   (23.06.2011 в 13:56)
 

>почему не прокатывает? очень даже прокатывает, а если поле даты TIMESTAMP то вообще шикарно прокатывает
---
поле даты нету и не предвидится его реализовывать

>а если класть в архив, то это будет самый настоящий архив в полном смысле слова, бд может и будет расти, но вот обращения к данной таблице будут редкими "по-праздникам" и на общей скорости работы это никак не отразиться, только малость дискового пространства кушать будет, но это совсем не страшно.
---
Информация которою будут выкладывать актуально только последнии 20 записи, остальное уже чушь подлежащая уничтожению (это я про новости зря пример привел потому как сие ввело вас в заблуждение)

  Ответить  
 
 автор: ShadowXak   (23.06.2011 в 13:51)   письмо автору
 
   для: Valick   (23.06.2011 в 13:14)
 

Нужно именно физическое удаление из базы всех предыдущих.

  Ответить  
 
 автор: cheops   (23.06.2011 в 13:58)   письмо автору
 
   для: ShadowXak   (23.06.2011 в 13:05)
 

Возможно вас заинтересует тема по ссылке http://softtime.ru/forum/read.php?id_forum=3&id_theme=79275

  Ответить  
 
 автор: ShadowXak   (23.06.2011 в 14:46)   письмо автору
 
   для: cheops   (23.06.2011 в 13:58)
 

спасибо за ссылку сейчас буду изучать и тестировать данный метод

  Ответить  
 
 автор: ShadowXak   (23.06.2011 в 15:20)   письмо автору
 
   для: cheops   (23.06.2011 в 13:58)
 

создал бд

CREATE TABLE `jos_test` (
  `id` int(11) NOT NULL auto_increment,
  `name` varchar(150) NOT NULL,
  `title` varchar(150) NOT NULL,
  PRIMARY KEY  (`id`)
) ;

INSERT INTO `jos_test` VALUES (1, 'test', 'test');
INSERT INTO `jos_test` VALUES (2, 'test2', 'test2');
INSERT INTO `jos_test` VALUES (3, 'test3', 'test3');
INSERT INTO `jos_test` VALUES (4, 'test4', 'test4');
INSERT INTO `jos_test` VALUES (5, 'test5', 'test5');
INSERT INTO `jos_test` VALUES (6, 'test6', 'test6');
INSERT INTO `jos_test` VALUES (7, 'test7', 'test7');
INSERT INTO `jos_test` VALUES (8, 'test8', 'test8');
INSERT INTO `jos_test` VALUES (9, 'test9', 'test9');
INSERT INTO `jos_test` VALUES (10, 'test10', 'test10');

собрал запрос который по ссылки, таблица создается но без строк и написано "используется"
create view testdels as select id as id_del from jos_test order by id desc limit 2,1

что я сделал не так?

  Ответить  
 
 автор: cheops   (23.06.2011 в 15:56)   письмо автору
 
   для: ShadowXak   (23.06.2011 в 15:20)
 

А результат какой? Т.е. что работает не так? Следующий запрос что-нибудь возвращает
SELECT * FROM testdels

  Ответить  
 
 автор: ShadowXak   (23.06.2011 в 16:15)   письмо автору
 
   для: cheops   (23.06.2011 в 15:56)
 

вот какой http://www.shadowxak.ru/db.JPG

  Ответить  
 
 автор: cheops   (23.06.2011 в 17:49)   письмо автору
 
   для: ShadowXak   (23.06.2011 в 16:15)
 

Нет, а запрос SELECT, приведенный выше, что возвращает? Пустую таблицу, число?

  Ответить  
 
 автор: ShadowXak   (23.06.2011 в 19:01)   письмо автору
 
   для: cheops   (23.06.2011 в 17:49)
 

потрясающе я просто не делал запрос, сейчас все сделал и ура все работает, вот только как теперь удалить саму таблицу которая создалась она пишит что используется и при попытке удалить:
#1051 - Unknown table 'testdels' 
или просто в последующем просто записывать туда данные не создавая поновой таблицу, если так то каким образом?

  Ответить  
 
 автор: ShadowXak   (24.06.2011 в 08:19)   письмо автору
 
   для: ShadowXak   (23.06.2011 в 19:01)
 

Ну всяко про колдовал ничего не помогает

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования