SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 14.03.2011 12:51:16

maseeva
Участник
Зарегистрирован: 17.02.2011
Сообщений: 22

НЕ МОГУ НАПИСАТЬ ПРОЦЕДУРУ((

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

База данных «Новости», в которой содержатся новости по разделам.
#Table structure for table 'razdnew' //раздела новостей
CREATE TABLE razdnew (
  id int(4) NOT NULL auto_increment,
  name varchar(50) NOT NULL, //название раздела новостей
  PRIMARY KEY  (id)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
# Table structure for table 'new' //непосредственно новости
CREATE TABLE new (
  id bigint(10) NOT NULL auto_increment,
  razd int default '0',
  zagl varchar(200) default NULL, //заголовок новости
  text text, //текст новости
  source varchar(50) default NULL,//источник новости
  dataadd date default NULL,//дата новости
  auther varchar(15) default NULL, //кто добавил новость в БД
  country varchar(30) default NULL,//страна
  PRIMARY KEY  (id),
  KEY NewIndex (razd,data,activity),
  FULLTEXT KEY together (zagl,t)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
Связь: razdnew.id=new.razd.

Неактивен

 

#2 14.03.2011 19:53:30

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: НЕ МОГУ НАПИСАТЬ ПРОЦЕДУРУ((

Не могу построить дом!!

Вы бы конкретизировали, что должна делать процедура, а ещё лучше, что именно у вас не получается.

http://dev.mysql.com/doc/refman/5.5/en/ … edure.html

Неактивен

 

#3 15.03.2011 12:37:30

maseeva
Участник
Зарегистрирован: 17.02.2011
Сообщений: 22

Re: НЕ МОГУ НАПИСАТЬ ПРОЦЕДУРУ((

Написать процедуру добавления  новости (заголовки новостей могут повторяться еженедельно)!
не могу понять как составить само тело процедуры(

Неактивен

 

#4 16.03.2011 00:28:42

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 849

Re: НЕ МОГУ НАПИСАТЬ ПРОЦЕДУРУ((

Для начала нужно понять, какие данные должна принимать процедура и какие действия внутри себя делать (в общих терминах, без кода).

Неактивен

 

#5 16.03.2011 13:40:06

maseeva
Участник
Зарегистрирован: 17.02.2011
Сообщений: 22

Re: НЕ МОГУ НАПИСАТЬ ПРОЦЕДУРУ((

процедура должна принимать новую новость (заголовок), и проверять : если этот новый заголовок повторяется через 7 дней то его записываем, а если ранее 7 дней то не записываем
как-то так, если я правильно поняла задание....

Неактивен

 

#6 16.03.2011 19:26:54

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 849

Re: НЕ МОГУ НАПИСАТЬ ПРОЦЕДУРУ((

если этот новый заголовок повторяется через 7 дней то его записываем, а если ранее 7 дней то не записываем

Другими словами, если новость с таким заголовком была менее 7 дней назад - её не записываем. Если так, то процедура, действующая на основе заголовка новости, будет выглядеть примерно так:


DELIMITER $$

DROP PROCEDURE IF EXISTS insert_news $$ -- удаляет старую процедуру - понадобится, если будете переписывать много раз

CREATE PROCEDURE insert_news (title VARCHAR(255))
BEGIN

  DECLARE already_exists BOOL DEFAULT FALSE;

  SELECT 1 INTO already_exists
  FROM new
  WHERE zagl = title AND dataadd > NOW() - INTERVAL 7 DAY
  LIMIT 1 ;

  IF !already_exists THEN
      INSERT INTO `new` SET
        zagl = title,
        dataadd = NOW() ;
  END IF;

END $$

DELIMITER ;


Если нужны какие-то еще данные о новости - добавьте их в список входных параметров процедуры по аналогии с title (только если что-то числовое будет - тип делайте INT, а не VARCHAR).

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson