![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 24.03.2007
Сообщений: 314
|
![]()
У меня есть таблицы 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. |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 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.
Не надо ничего усложнять. Все достаточно тривиально.
|
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 24.03.2007
Сообщений: 314
|
![]()
А в чем ее создавать? В SQL оно работать не хочет. Пишет , что неизвестны слова function, return
|
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,087
|
![]()
а СУБДя то хоть какая?
|
![]() |
![]() |
![]() |
#5 |
Старожил
Регистрация: 13.12.2006
Сообщений: 3,859
|
![]()
В SQL она работать будет, но не во всех версиях диалекта, разумеется. Только такой СУБД не существует.
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи |
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 16.04.2007
Сообщений: 298
|
![]()
Да ладно, не существует, а Oracle на что. Я просто работаю с Oracle, там такое описание.
Не надо ничего усложнять. Все достаточно тривиально.
|
![]() |
![]() |
![]() |
#7 |
Старожил
Регистрация: 13.12.2006
Сообщений: 3,859
|
![]()
"Oracle"="SQL" ?
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи |
![]() |
![]() |
![]() |
#8 |
Форумчанин
Регистрация: 16.04.2007
Сообщений: 298
|
![]()
"Oracle" = "PL/SQL" а в InterBase... ну там это будет немного по-другому, как, не скажу, не работал. Да и потом... неужели так сложно просто взять да немного переделать синтаксис под свои нужды, если понятно, что должна вернуть функция. Если непонятно, то тогда можно спросить.
Не надо ничего усложнять. Все достаточно тривиально.
Последний раз редактировалось Shuraken; 24.05.2007 в 12:27. |
![]() |
![]() |
![]() |
#9 |
Форумчанин
Регистрация: 24.03.2007
Сообщений: 314
|
![]()
Очень интересно, мне и так было понятно, что должна вернуть функция, а непонятно как именно это реализовать
|
![]() |
![]() |
![]() |
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
помогите решить проблему | 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 |