Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2016, 18:56   #1
mishammm
Форумчанин
 
Регистрация: 21.09.2013
Сообщений: 232
По умолчанию Хранимая процедура по увеличению стипендии студентам

Здравствуйте , нужно увеличить стипендию в два раза тем студентам которые имеют средний бал выше за 4.7 . Оценки находяться в отдельной таблице Uspesh , с полем ocinka, а сами студенты находяться в таблице Students
Вот что я писал:
Код:
CREATE OR ALTER PROCEDURE PR8 RETURNS (fam VARCHAR(15),stipendia NUMERIC(15,2)) 
AS 
DECLARE variable avg_ocinka NUMERIC(5,2); 
BEGIN 
FOR SELECT sfam,avg(uspish.ocinka) FROM students INNER JOIN uspish ON 
students.snom = uspish.snom GROUP BY sfam INTO:fam,avg_ocinka 
do 
BEGIN 
IF (avg_ocinka>4.7) THEN 
stipendia = stipendia*2;
suspend; 
END
2 таблицы объедены по полю snom. В результате фамилию то выводит а вот оценку null даёт помогите пожалуйста исправить запрос. Спасибо!
mishammm вне форума Ответить с цитированием
Старый 17.05.2016, 23:54   #2
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Код:
create table Students (s_id int identity,
                       s_fio nvarchar(30),
                       s_adres nvarchar(30),
                       s_Stipend money
                       constraint pk_student primary key(s_id) 
                       )
--------
create table Uspesh (u_id int identity,
                     u_ocinka decimal(15,2),
                     Student_id int
                     constraint FK_Uspesh foreign key (Student_id)
                     references Students(s_id) on delete cascade
                     )
---------
insert into Students(s_fio, s_adres, s_Stipend) values (N'Васия', N'Какой то Адрес', 2500),
                                                       (N'Петия', N'Какой то Адрес', 1700),
                                                       (N'Иване', N'Какой то Адрес', 1800),
                                                       (N'Мксим', N'Какой то Адрес', 1900)
select * from Students
--------
insert into Uspesh(u_ocinka, Student_id ) values(4.7 , 2),
                                                (5.2 , 1),
                                                (4.7 , 3),
                                                (8.2 , 4)
select * from Uspesh

------- Собираем данных 
CREATE VIEW MyStudent
AS
SELECT s_fio, s_adres, s_Stipend, U.u_ocinka
FROM Students S inner join Uspesh U
ON S.s_id=U.Student_id


------- увеличить стипендию в два раза тем студентам у которые  бал <= 4.7 

UPDATE MyStudent SET s_Stipend = CASE
                 WHEN u_ocinka<=4.7 THEN s_Stipend*2
                 ELSE s_Stipend  
                 END
SELECT * FROM MyStudent

------ увеличили только у (Петия и Иване)
Так понятно ?

Последний раз редактировалось xxbesoxx; 18.05.2016 в 00:10.
xxbesoxx вне форума Ответить с цитированием
Старый 18.05.2016, 00:15   #3
mishammm
Форумчанин
 
Регистрация: 21.09.2013
Сообщений: 232
По умолчанию

Цитата:
Так понятно ?
да, благодарю
mishammm вне форума Ответить с цитированием
Старый 18.05.2016, 00:29   #4
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Пожалуйста
xxbesoxx вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Хранимая процедура snouwyt Помощь студентам 1 13.06.2015 07:20
Составить программу назначения стипендии студентам по результатам сессии Евгешаа Фриланс 3 19.04.2012 14:11
Хранимая процедура LizaVeta БД в Delphi 1 15.05.2010 10:42
хранимая процедура serg369 SQL, базы данных 4 07.02.2010 14:33
Хранимая процедура. nimf БД в Delphi 2 22.04.2008 13:16