Страница 1 из 1

Селект для мастера детайла в тригере

Добавлено: 23 июн 2008, 11:28
Antarey
Есть две таблички -
мастер

Код: Выделить всё

CREATE TABLE GRUPA (
    NAME          CHAR(50),
    BYHCHET       INTEGER,
    PROC          NUMERIC(15,2),
    KOD_GRYPU     INTEGER,
    MASTER_GRYPU  INTEGER,
    MASTER_ID     INTEGER NOT NULL
и детайл
CREATE TABLE PROC_GRYPU (
    DATA          DATE,
    PROC          NUMERIC(15,2),
    MASTER_GRYPU  INTEGER,
    ID            INTEGER NOT NULL
);
завязка MASTER_ID->MASTER_GRYPU
Задача такая - надо выбрать последний процент -PROC- в детайле
и проставить его в мастер
Такой вариант запроса

Код: Выделить всё

select  d.proc,MAX(d.data) Data_Proc from grupa m
left join proc_grypu d on m.master_id=d.master_grypu
where (d.proc is not null)
group by d.proc,d.data
order by data
выдает все записи в связке,а мне надо одина запись процента с максимальной датой
Ето реально или надо создавать цыкл?

Добавлено: 23 июн 2008, 12:49
belov-evgenii

Код: Выделить всё

select first 1 d.proc, d.data
from PROC_GRYPU d
order by 2 desc

Добавлено: 23 июн 2008, 14:11
Antarey
belov-evgenii
код работает,но как его прикрутить для мастер-детайла

Добавлено: 23 июн 2008, 15:56
SAMZ
Antarey писал(а):belov-evgenii
код работает,но как его прикрутить для мастер-детайла
Ну как ты и хотел в тригере. Создаешь в тригере таблицы - деталь тригер афтер инсерт апдэйт делете , вычисляешь запрсом последний процент и апдейтишь запись мастера. Все проосто, как точило

Добавлено: 23 июн 2008, 17:27
kdv
и на каждую деталь срабатывает триггер, который считает данные, и пинает мастер-запись.

Добавлено: 23 июн 2008, 18:03
SAMZ
kdv писал(а):и на каждую деталь срабатывает триггер, который считает данные, и пинает мастер-запись.
Вопрос тут не в пинании мастера, а в том зачем вообще это надо. Есть мастер запись, есть записи детали. Когда понадобится, берешь из деталей то, что необходимо. Но уж если ты горячо желаешь хранить в записи мастере инфу из деталей, то как тут без пинания. Это плата за денормализацию.

Добавлено: 24 июн 2008, 09:28
Antarey
А моно как-то сварганить просто сам запрос по вышеизложенным требованиям?

Добавлено: 24 июн 2008, 09:57
kdv
А моно как-то сварганить просто сам запрос
нет. проектировать БД надо по человечески.

Добавлено: 24 июн 2008, 10:36
Antarey
kdv
Я догадывался,просто не хотелось заводить в мастере еще один столбец фактически дублирующий последнюю запись детайла.
Но ничего - не проблема прогнать его через тригер
Пасиба за помощь