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

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

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.05.2007, 16:04   #1
yulia
Форумчанин
 
Аватар для yulia
 
Регистрация: 24.03.2007
Сообщений: 314
По умолчанию проблему возможно решить с помощью хранимой процедуры на SQL?

У меня есть таблицы Teacher и Children
Teacher: IdTeacher, LastName, Cvalification, Gibkost, Plastika, Jump, Sluh, General
Children: IdChild, LastName, Gibkost, Plastika, Jump, Sluh, IdTeacher.
Мне надо для каждого ребенка рассчитать ((Сhildren.Gibkost*Teacher.Gibkost) +(Children.Plas tika*Teacher.Plastika)+(Children.Ju mp*Teacher.Jump )+(Children.Sluh*Teacher.Sluh))>=Te acher.General.
Из тех преподавателей, для которых это условие выполняется надо выбрать преподавателя с минимальной квалификацией и записать его IdTeacher в соответствующее поле таблицы Children.
Это возможно сделать с помощью хранимой процедуры на SQL??? Если да, то помогите пожалуйста!!!!
Или просто с помощью запроса без процедуры.... или использую View. Вообщем любым способом средствами SQL.
yulia вне форума Ответить с цитированием
Старый 23.05.2007, 18:56   #2
Shuraken
Форумчанин
 
Аватар для Shuraken
 
Регистрация: 16.04.2007
Сообщений: 298
По умолчанию

create or replace function GetIDTeacher Return Integer
as id_ integer;
begin
select IdTeacher into id_ from teacher t_ where
t_.Cvalification = (
Select Min(Cvalification) from teacher t, children c where
((c.Gibkost*t.Gibkost) + (c.Plastika*t.Plastika) + (c.Jump*t.Jump) + (c.Sluh * t.Sluh)) >= Teacher.General)
Return id_;
Exception when others then
return 0;
END;

Update children set IdTeacher = GetIDTeacher;
___________________________________ ___

Сперва создаешь такую функцию (честно, не проверял, может она и не будет работать, хотя по идее должна), после этого делаешь Update.
Не надо ничего усложнять. Все достаточно тривиально.
Shuraken вне форума Ответить с цитированием
Старый 23.05.2007, 21:25   #3
yulia
Форумчанин
 
Аватар для yulia
 
Регистрация: 24.03.2007
Сообщений: 314
По умолчанию

А в чем ее создавать? В SQL оно работать не хочет. Пишет , что неизвестны слова function, return
yulia вне форума Ответить с цитированием
Старый 24.05.2007, 02:09   #4
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,520
По умолчанию

а СУБДя то хоть какая?
pu4koff вне форума Ответить с цитированием
Старый 24.05.2007, 09:03   #5
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

В SQL она работать будет, но не во всех версиях диалекта, разумеется. Только такой СУБД не существует.
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 24.05.2007, 11:05   #6
Shuraken
Форумчанин
 
Аватар для Shuraken
 
Регистрация: 16.04.2007
Сообщений: 298
По умолчанию

Да ладно, не существует, а Oracle на что. Я просто работаю с Oracle, там такое описание.
Не надо ничего усложнять. Все достаточно тривиально.
Shuraken вне форума Ответить с цитированием
Старый 24.05.2007, 11:11   #7
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

"Oracle"="SQL" ?
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 24.05.2007, 12:21   #8
Shuraken
Форумчанин
 
Аватар для Shuraken
 
Регистрация: 16.04.2007
Сообщений: 298
По умолчанию

"Oracle" = "PL/SQL" а в InterBase... ну там это будет немного по-другому, как, не скажу, не работал. Да и потом... неужели так сложно просто взять да немного переделать синтаксис под свои нужды, если понятно, что должна вернуть функция. Если непонятно, то тогда можно спросить.
Не надо ничего усложнять. Все достаточно тривиально.

Последний раз редактировалось Shuraken; 24.05.2007 в 12:27.
Shuraken вне форума Ответить с цитированием
Старый 24.05.2007, 20:25   #9
yulia
Форумчанин
 
Аватар для yulia
 
Регистрация: 24.03.2007
Сообщений: 314
По умолчанию

Очень интересно, мне и так было понятно, что должна вернуть функция, а непонятно как именно это реализовать
yulia вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите решить проблему 1234 Общие вопросы Delphi 2 04.07.2008 11:52
Помогите решить проблему в CSS... bululya HTML и CSS 5 01.07.2008 10:27
Помогите решить проблему с FormatDateTime JIK Помощь студентам 6 22.06.2008 16:35
Выполнение хранимой процедуры с output параметром Иванчо БД в Delphi 5 26.10.2007 14:59
помогите решить проблему ... alexey7 Microsoft Office Excel 2 16.10.2007 13:25