![]() |
|
Модераторы: skyboy |
![]()
|
|
| Valpeza |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 25 Регистрация: 26.4.2011 Репутация: нет Всего: нет |
Доброго всем времени суток) У меня есть таблица с диагностическими назначениями, записи в котрой часто повторялись, была создана на основе этой новая таблица и в нее были по средствам старой внесены уже сгруппированные записи, а в отдельном поле выводится количество повторений. Там идея конечная значительно серьезней конечно, но пока вот так. Вот теперь мне нужен тригер который при поступлении новой записи в в старую таблицу сразу ее выцеплял бы и заносил в новую присваивая к эдентичной группе либо если такой записи еще небыло, то создавал новую запись. Помогите, люди добрые, кто чем может))) А то я дальше елементарных запросов к базе никак уйти не могу((
|
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 454 |
Valpeza, от тебя уже несколько вопросов, и все свидетельствуют о том, что ты вообще ничего не смыслишь в БД и SQL, не знаешь самых элементарных основ. Может, поора уже прекратить маяться [censored] и поучить по предмету хоть что-нибудь? По сабжу - реализация того, о чём ты говоришь, диалектозависима. Но в любом случае это триггер, и insert into on duplicate key update внутри. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Valpeza |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 25 Регистрация: 26.4.2011 Репутация: нет Всего: нет |
Спасибо за аналитический обзор. Ну если бы я разбирался в этой области, я бы не стал сюда писать... Поэтому не обессудьте. Я воюю с oracle 11 через navigator, это касательно диалектозависимости.
|
|||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
rtfm Coding triggers, merge upd
Мне думается, тут можно и без триггера обойтись. Создать аггрегирующую материализованную вьюху, c фастрефрешем по коммиту. >>> Это сообщение отредактировал(а) Zloxa - 14.5.2011, 11:27 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| Valpeza |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 25 Регистрация: 26.4.2011 Репутация: нет Всего: нет |
вот с этой частью я совладал
а вот что писать в declare, какие там переменные объявлять надо, я не понимаю... Мне надо чтобы он включался при вставке новой записи в таблицу od_drugs и потом эту запись вносил в таблицу od_drugs_pre, при этом если такой записи нет среди существующих, то создавал новую, а если есть, то просто увеличивал бы счетчик на +1 у такой же записи. |
|||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
если вам не нужны переменные, то секция declare не нужна. -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| Valpeza |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 25 Регистрация: 26.4.2011 Репутация: нет Всего: нет |
ДАк вот иенно этого я и не понимаю, нужны они мне или нет... ТАм должно быть что-то в духе если вставлена новая запись взять ее и вставить в такую-то таблицу, если там такая уже есть, то объедениеть видимо через union, если нет, то создать новую... вобщем трындец( В колове уже кишь-мишь...
|
|||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
Вы даже не потрудились подумать как описать задачу так, чтобы ее возможно стало сделать за вас.
-------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| Valpeza |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 25 Регистрация: 26.4.2011 Репутация: нет Всего: нет |
На самом деле все это часть моего дипломного проекта, с дури влез в совершенно новую по сути для себя тему, хотя специализируюсь я на других вещах,скажем так. И вот остается совсем чуть-чуть до защиты, а я по уши в какулинумах...) Ну уж раз не понятно из самого простого что мог придумать объяснения, то что уж тут поделаешь..... Спасибо за попытки поставить меня на путь истинный)
|
|||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
Добавлено @ 13:42 Если затевать тоже с триггером, а поля группировки могут принимать неопределенные значения, жостенько весьма получается, мутороно. Матвью - проще. Это сообщение отредактировал(а) Zloxa - 16.5.2011, 13:47 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| Valpeza |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 25 Регистрация: 26.4.2011 Репутация: нет Всего: нет |
Спасибо за помощь)
Мне навигатор выпуливает ошибку Error: ORA-12044: недействительный параметр CREATE MATERIALIZED VIEW LOG на первой же строке, С чем это связано?
|
|||
|
||||
| Valpeza |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 25 Регистрация: 26.4.2011 Репутация: нет Всего: нет |
Тут ошибка "Не верное предложение на языке SQL"
Добавлено @ 18:54 Стоп, а эту вьюху надо подвязывать к таблице из которой будут переноситься данные или к таблице в которую они будут попадать, судя по коду скорее всего второй вариант, но если так то как я вновь поступившие записи буду вырывать? Это сообщение отредактировал(а) Valpeza - 16.5.2011, 18:56 |
|||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
я вам привел лог сессии а вы и его с ошибки умудрились воспроизвести? ![]() откуда там слово "а" перед "with" затесалось? Это лог. Отделите команды от вывода. ее ни к чему не надо подвязывать. Она сама создает таблицу, в которой хранит данные. Я специально исопльзовал в своем скрипте те имена, которые вы озвучили в своих сумубурных объяснениях. Это сообщение отредактировал(а) Zloxa - 16.5.2011, 19:39 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| Valpeza |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 25 Регистрация: 26.4.2011 Репутация: нет Всего: нет |
Да лажанулся я че-то... Прошу прощения...
ТОесть по сути мне нужно только это.?
в таком случае мне не понятно как эта вьюха будет получать инфу о том что в таблицу od_drugs внесена запись и заносить ее в od_orderc_pre.... |
|||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
Это внутренние механизмы оракла. На досуге изучите. А покуда - просто поверьте. -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| Zloxa |
|
||||||||||||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
Стала интересна разница в подходах, решил померить перфомансы
Матвьюха
Триггерная логика:
Свободная от логики табла для примеру и табла с тестовыми данными
тесткейс
1 прогон - добавление новых данных
имеем 9.75 + 6.765 = 16.515 на матвью против 15.86 триггером 2 прогон - добавление существующих данных
имеем 11.25 + 9.313 = 20.563 на матвью против 8.781 триггером Получается триггерная логика имеет таки некоторые преимущества по производительности. Это сообщение отредактировал(а) Zloxa - 17.5.2011, 12:51 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
||||||||||||
|
|||||||||||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
Модификация ключа аггрегации
23.625+ 34.796 = 58.421 против 60.828 вообще не существенно -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Составление SQL-запросов | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |