Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 условный оператор  [new]
ArtemVS
Member

Откуда:
Сообщений: 9
-----------------------------------------------------------------------------------------------------------
create trigger max_exp
on trigs
after update
as

update trigs
set trigs.doctor_id = T3.doctor_id,
trigs.condition_name = c.condition_name,
trigs.doctor_name = ms.last_name+' '+ms.doctor_name+' '+ms.middle_name
from trigs
inner join condition c on c.condition_id = trigs.condition_id
left outer join inserted i on i.trig_id = trigs.trig_id,
(select top(1) T2.doctor_id
from
(select *
from medical_staff ms inner join
(select max(experience) as maximum
from medical_staff ms) as T1 on T1.maximum = ms.experience) as T2
order by newid()) as T3, medical_staff ms
where trigs.trig_id = i.trig_id and ms.doctor_id = T3.doctor_id


Здравствуйте! Подскажите пожалуйста, есть триггер который при update физического состояния больного на
крайне тяжелое, направляет его
к лучшим специалистам при этом триггер меняет еще названия состояния, id доктора к
которому больной направлен и имя доктора, но нужно сделать это так чтобы при изменении состояни на не крайне больной
id доктора и его имя не менялось как это можно сделать

я так полагаю что это можно сделать через if и else но что то не получается
2 сен 13, 03:02    [14782276]     Ответить | Цитировать Сообщить модератору
 Re: условный оператор  [new]
aleks2
Guest
Вы больничку огласите - хоть стороной обходить будем...
create trigger max_exp on trigs
after update 
as

update trigs
   set trigs.doctor_id = T3.doctor_id,
         trigs.condition_name = c.condition_name,
          trigs.doctor_name = ms.last_name+' '+ms.doctor_name+' '+ms.middle_name
   from trigs 
           inner join condition c on c.condition_id = trigs.condition_id
           left outer join inserted i on i.trig_id = trigs.trig_id -- Ну, и хде тут условие "который при update физического состояния больного накрайне тяжелое, направляет его"?
-- Ведь тупо обновляем "в любом случае"...

-- не, ну вроде обучен join писать? А опять херню в виде запятых лепит...
,
 (select top(1) T2.doctor_id
 from
 (select * 
from medical_staff ms inner join
 (select max(experience) as maximum
 from medical_staff ms) as T1 on T1.maximum = ms.experience) as T2
 order by newid()) as T3, medical_staff ms -- да ишо и лотерею устраиваем...
 where trigs.trig_id = i.trig_id and ms.doctor_id = T3.doctor_id
2 сен 13, 06:14    [14782318]     Ответить | Цитировать Сообщить модератору
 Re: условный оператор  [new]
aleks2
Guest
Ой, блин, недосмотрел - тут уже "в морг" пора отправлять

update trigs
   set trigs.doctor_id = T3.doctor_id,
         trigs.condition_name = c.condition_name,
          trigs.doctor_name = ms.last_name+' '+ms.doctor_name+' '+ms.middle_name
   from trigs 
           inner join condition c on c.condition_id = trigs.condition_id
           LEFT OUTER join [/b]inserted 
2 сен 13, 06:17    [14782319]     Ответить | Цитировать Сообщить модератору
 Re: условный оператор  [new]
ArtemVS
Member

Откуда:
Сообщений: 9
да это ж учебная базп данных, я студент, мы только начали изучать! а вы уже так предвзято ко всеми отнеслись!
2 сен 13, 11:07    [14782999]     Ответить | Цитировать Сообщить модератору
 Re: условный оператор  [new]
ArtemVS
Member

Откуда:
Сообщений: 9
aleks2,
не лотерея, а просто выбираю одно из самых лучших, их несколько в таблице с опытом работы у которых он самый большой,
чтобы не к одному и тому же всегда направлял!
а в том месте где вы написали про инсертед это для того чтобы только одна строка обновлялась а не вся таблица!
2 сен 13, 11:13    [14783031]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить