powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Реализация триггера
20 сообщений из 20, страница 1 из 1
Реализация триггера
    #39448172
Bastist29
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня мало опыта в этом и я хочу спросить, как лучше реализовать?

Пример:
есть таблица со студентами, с разным направлением, с разной формой обучения и с определенной формой обучения.

Надо:
написать триггер, который обновляет таблицу, когда обновляется другая таблица, но сложность не в этом. Сложность, для меня, в том, что там есть значения, которые дублируются, а вывести надо одно и подсчитать сколько всего их.

триггер будет обновлять таблицу, где столбцы :
Форма обучения, специальность, кол-во.

В целом, результат должен быть как на изображении.

Я не знаю, как реализовать это.
...
Рейтинг: 0 / 0
Реализация триггера
    #39448175
Bastist29
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поправка

Bastist29У меня мало опыта в этом и я хочу спросить, как лучше реализовать?

Пример:
есть таблица со студентами с разным направлением и с разной формой обучения.

Надо:
написать триггер, который обновляет таблицу, когда обновляется другая таблица, но сложность не в этом. Сложность, для меня, в том, что там есть значения, которые дублируются, а вывести надо одно и подсчитать сколько всего их.

триггер будет обновлять таблицу, где столбцы :
Форма обучения, специальность, кол-во.

В целом, результат должен быть как на изображении.

Я не знаю, как реализовать это.
...
Рейтинг: 0 / 0
Реализация триггера
    #39448182
креате вью
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Разве в школах отменили сочинения, откуда берутся эти "кто на ком стоял"? Кто заставляет не осиливших элементарное переписывание заданий переходить на следующий интеллектуальный уровень - решение этих заданий?
...
Рейтинг: 0 / 0
Реализация триггера
    #39448186
Bastist29
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
креате вью, а что не понятно? .-.
...
Рейтинг: 0 / 0
Реализация триггера
    #39448261
Bastist29, так у тебя уже есть результат на картинке. Зачем тебе табличка и триггер?
...
Рейтинг: 0 / 0
Реализация триггера
    #39448290
AnSi_Sr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
такую таблицу можно сделать в ворде или екселе
...
Рейтинг: 0 / 0
Реализация триггера
    #39448298
ma1tus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
merge или update/insert в цикле ?
...
Рейтинг: 0 / 0
Реализация триггера
    #39448348
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bastist29,

не совсем понятно о "дублируются"
а так
if inserting then kol:=kol+1
if deleting then kol:=kol-1
if updating(fo) then kol:=kol+1;kol:=kol-1;

.....
stax
...
Рейтинг: 0 / 0
Реализация триггера
    #39448556
денормаль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
stax..не совсем понятно о "дублируются"
форма обучения то ли денормализована и совпадает в строках по одному студенту, то ли студент может одновременно и очно и заочно обучаться.
В зависимости от этого нужно получить другую денормализацию с количеством то ли уникальных студентов, то ли по разу в каждой форме обучения.
...
Рейтинг: 0 / 0
Реализация триггера
    #39448561
Bastist29
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
stax.., то есть, есть таблица "students" c разным направлением и разной формой обучения. И триггер должен выводить в таблицу "stats" направления с формой обучения и кол-вом человек.
...
Рейтинг: 0 / 0
Реализация триггера
    #39448589
Бракованный финский угорь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bastist29, какой триггер? о чем ты? я видимо тебя не понимаю.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
with t(tabn, fam, imy, otch, fo, spec) as
(
  select 100, 'Василий', 'Ленивый', 'Тюфяк', 'Очковая',       to_date('09.03.01', 'dd.mm.yy') from dual union all
  select 101, 'Иди', 'Учи', 'Уроки', 'Задрочная',             to_date('09.04.01', 'dd.mm.yy') from dual union all
  select 102, 'Как', 'Бесят', 'Пупсики', 'Очко-задрочная',    to_date('09.05.01', 'dd.mm.yy') from dual union all
  select 103, 'Проще Спросить', 'Чем', 'Подумать', 'Очковая', to_date('09.03.01', 'dd.mm.yy') from dual union all
  select 104, 'Иванов', 'Елен', 'Викторович', 'Очковая',      to_date('09.03.01', 'dd.mm.yy') from dual union all
  select 105, 'Семенова', 'Елена', 'Викторовна', 'Задрочная', to_date('09.04.01', 'dd.mm.yy') from dual
) select fo, spec, count(*) kol from t
group by fo, spec
order by 3 desc;



FO SPEC KOLОчковая 09.03.2001 00:00:00 3Задрочная09.04.2001 00:00:00 2Очко-задрочная 09.05.2001 00:00:00 1
...
Рейтинг: 0 / 0
Реализация триггера
    #39448634
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bastist29,

У Вас не получается написать триггер?

......
stax
...
Рейтинг: 0 / 0
Реализация триггера
    #39448642
Bastist29
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Бракованный финский угорь, чтобы автоматом подсчитывалось и обновлялось, не? При добавлении, изменении таблицы "students". По заданию так.
...
Рейтинг: 0 / 0
Реализация триггера
    #39448648
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bastist29Бракованный финский угорь, чтобы автоматом подсчитывалось и обновлялось, не? При добавлении, изменении таблицы "students". По заданию так.
что не получается?

.......
stax
...
Рейтинг: 0 / 0
Реализация триггера
    #39448651
Bastist29
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Бракованный финский угорь, и это не дата, а направление специальности. То есть 09.03.03 - Прикладная информатика
...
Рейтинг: 0 / 0
Реализация триггера
    #39448656
Bastist29
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
stax..,

я не знаю, как вывести в строку "форму обучения+специальность", чтобы оно не дублировалось, так как студентов может быть несколько.
...
Рейтинг: 0 / 0
Реализация триггера
    #39448657
Бракованный финский угорь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bastist29Бракованный финский угорь, чтобы автоматом подсчитывалось и обновлялось, не?
Говорят, на Оракле это сделать невозможно. И я читал Том Кайта, он писал, что "направление специальности" лучше хранить в поле с типом date.
...
Рейтинг: 0 / 0
Реализация триггера
    #39448671
Dshedoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bastist29,

Кто тебе сказал, что нужна именно таблица STATS?
...
Рейтинг: 0 / 0
Реализация триггера
    #39448682
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bastist29,

специальность допилете

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
SQL> ed
Wrote file afiedt.buf

  1  CREATE OR REPLACE TRIGGER students_auid
  2  AFTER INSERT OR UPDATE OR DELETE ON students FOR EACH ROW
  3  BEGIN
  4  IF   INSERTING then
  5    update stats set kol=kol+1 where fo=:new.fo;
  6  ELSIF DELETING then
  7    update stats set kol=kol-1 where fo=:old.fo;
  8  ELSIF UPDATING and :new.fo<>:old.fo then
  9    update stats set kol=kol+1 where fo=:new.fo ; --or но тогда надо order by
 10    update stats set kol=kol-1 where fo=:old.fo ;
 11  END IF;
 12* END;
SQL> /

Trigger created.

SQL> select * from stats;

FO         KOL
--- ----------
o            0
z            0
oz           0

SQL> insert  into students values(1,'Stax','o');

1 row created.

SQL> insert  into students values(2,'Bastist29','z');

1 row created.

SQL> select * from stats;

FO         KOL
--- ----------
o            1
z            1
oz           0

SQL> update students set fo='oz' where tabn=1;

1 row updated.

SQL> select * from stats;

FO         KOL
--- ----------
o            0
z            1
oz           1

SQL> select * from students;

      TABN FIO                  FO
---------- -------------------- ---
         1 Stax                 oz
         2 Bastist29            z

SQL> delete students where tabn=2;

1 row deleted.

SQL> select * from students;

      TABN FIO                  FO
---------- -------------------- ---
         1 Stax                 oz

SQL> select * from stats;

FO         KOL
--- ----------
o            0
z            0
oz           1

SQL>




зы
1) для упрощения поля not null
2) pk/fk для fo

.....
stax
...
Рейтинг: 0 / 0
Реализация триггера
    #39448701
Bastist29
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
stax..,

большое спасибо
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Реализация триггера
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]