Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> создание функции 
:(
    Опции темы
sergey6288
Дата 11.2.2009, 23:11 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 480
Регистрация: 22.9.2008
Где: Минск

Репутация: нет
Всего: -11



нужно создать функцию
Код


CREATE TABLE kurs (
  id tinyint(3) NOT NULL auto_increment,
  name varchar(50) NOT NULL,                                        //название
  id_prepod tinyint(3) unsigned default NULL,                 // преподаваель
  PRIMARY KEY  (id)
) TYPE=MyISAM DEFAULT CHARSET=cp1251;
# Table structure for table 'teachers'                             // преподаватели
CREATE TABLE teachers (
  id tinyint(3) unsigned NOT NULL auto_increment,
  fio  varchar(50)                                                                 //ФИО
  login varchar(7) NOT NULL,                                          //логин для входа в систему
  password varchar(5) NOT NULL ,                                  //пароль для входа в систему
  PRIMARY KEY  (id)
) TYPE=MyISAM DEFAULT CHARSET=cp1251;

Связь: teachers.id=kurs.id_prepod

Написать функцию подсчета количества курсов преподаваемых заданным преподавателем.
предпологаю
Код


Create functions count_kurs (kurs.id_prepod)
returns int;
begin
select count(name) INTO  total
from teachers,kurs where teachers.id=kurs.id_prepod
returns total;
end;    


Добавлено через 12 минут и 8 секунд
Create functions count_kurs (kurs.id_prepod)
returns int;
begin
select count(name) INTO  total
from teachers,kurs where teachers.id=kurs.id_prepod
returns total;
end;    

выдает сообщение об ошибке

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'functions count_kurs (kurs.id_prepod)
returns int' at line 1

Это сообщение отредактировал(а) skyboy - 11.2.2009, 23:14
PM MAIL   Вверх
sergey6288
Дата 11.2.2009, 23:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 480
Регистрация: 22.9.2008
Где: Минск

Репутация: нет
Всего: -11



нужно также написать прцедуру и триггер

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


PM MAIL   Вверх
Данкинг
Дата 11.2.2009, 23:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 0
Всего: 130



Тебе же написали:
Цитата(sergey6288 @  11.2.2009,  23:11 Найти цитируемый пост)
check the manual

 smile 

Цитата(sergey6288 @  11.2.2009,  23:38 Найти цитируемый пост)
нужно также написать прцедуру и триггер

Ну так это, нужно - пиши, я и на это тоже добро даю. smile 

Кстати, имей в виду, что NAME может быть зарезервированным СУБД словом.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
sergey6288
Дата 11.2.2009, 23:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 480
Регистрация: 22.9.2008
Где: Минск

Репутация: нет
Всего: -11



Цитата(Данкинг @  11.2.2009,  23:44 Найти цитируемый пост)
Кстати, имей в виду, что NAME может быть зарезервированным СУБД словом.

поменял на  * все равно выдает ошибку
PM MAIL   Вверх
skyboy
Дата 12.2.2009, 00:25 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 41
Всего: 260



Цитата(sergey6288 @  11.2.2009,  22:11 Найти цитируемый пост)
Create functions

это типа, "многая функций хачу создать"?
PM MAIL   Вверх
Bikutoru
Дата 12.2.2009, 09:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Увлекающийся
**


Профиль
Группа: Участник
Сообщений: 522
Регистрация: 24.5.2005
Где: Москва

Репутация: 1
Всего: 22



Ох и ошибок же у тебя!
Во-первых, CREATE FUNCTION, а не CREATE FUNCTIONS.
Во-вторых, `kurs.id_prepod` - это не нормальное имя для параметра функции (плюс не указан его тип)
В-третьих, select count(name) INTO  total - переменная total не объявлена
В-четвертых, после строки с SELECT нет ;
В-пятых, SELECT не возвращает количество курсов конкретного преподавателя.
В-шестых, не "returns total", а "RETURN total"

Имхо, должно быть так:
Код

DELIMITER $$
CREATE FUNCTION count_kurs (id_prepod INT) RETURNS INT
BEGIN
    DECLARE result INT;
    SELECT COUNT(*) INTO result FROM kurs k WHERE k.id_prepod=id_prepod;
    RETURN result;
END$$
DELIMITER ;



--------------------
Человек, словно в зеркале мир — многолик, 
Он ничтожен — и он же безмерно велик!
Омар Хайям
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0488 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.