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

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

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

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

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

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

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

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

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

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

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

Я не знаю, как реализовать это.
...
Рейтинг: 0 / 0
03.05.2017, 20:47
    #39448182
креате вью
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация триггера
Разве в школах отменили сочинения, откуда берутся эти "кто на ком стоял"? Кто заставляет не осиливших элементарное переписывание заданий переходить на следующий интеллектуальный уровень - решение этих заданий?
...
Рейтинг: 0 / 0
03.05.2017, 20:50
    #39448186
Bastist29
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация триггера
креате вью, а что не понятно? .-.
...
Рейтинг: 0 / 0
04.05.2017, 00:48
    #39448261
Реализация триггера
Bastist29, так у тебя уже есть результат на картинке. Зачем тебе табличка и триггер?
...
Рейтинг: 0 / 0
04.05.2017, 04:46
    #39448290
AnSi_Sr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация триггера
такую таблицу можно сделать в ворде или екселе
...
Рейтинг: 0 / 0
04.05.2017, 06:37
    #39448298
ma1tus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация триггера
merge или update/insert в цикле ?
...
Рейтинг: 0 / 0
04.05.2017, 08:50
    #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
04.05.2017, 11:43
    #39448556
денормаль
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация триггера
stax..не совсем понятно о "дублируются"
форма обучения то ли денормализована и совпадает в строках по одному студенту, то ли студент может одновременно и очно и заочно обучаться.
В зависимости от этого нужно получить другую денормализацию с количеством то ли уникальных студентов, то ли по разу в каждой форме обучения.
...
Рейтинг: 0 / 0
04.05.2017, 11:44
    #39448561
Bastist29
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация триггера
stax.., то есть, есть таблица "students" c разным направлением и разной формой обучения. И триггер должен выводить в таблицу "stats" направления с формой обучения и кол-вом человек.
...
Рейтинг: 0 / 0
04.05.2017, 12:06
    #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
04.05.2017, 12:32
    #39448634
stax..
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация триггера
Bastist29,

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

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

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

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

Кто тебе сказал, что нужна именно таблица STATS?
...
Рейтинг: 0 / 0
04.05.2017, 13:11
    #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
04.05.2017, 13:20
    #39448701
Bastist29
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация триггера
stax..,

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


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