Выборка в мастер детайле и ключевое поле
Выборка в мастер детайле и ключевое поле
Господа,помогите решить две проблемы:
1.- как в одной транзакции добавлять данные в мастер детайл таблицы,если к примеру
в мастер добавляется одна запись а в детал 10,хотя ето не важно.Связь делаю - автоинкриментное
поле в мастере и интежер поле в детайле,но ведь пока не пройдет транзакция ластавтоинк мастер
поля будет неизвестно??
2. - есть мастер таблица FIO char(70),MasterId AutoInc
и детайл Data DATE,MasterId INTEGER,Id AutoInc - так вот надо сделать выборку тех людей у которых к примеру 2 месяца не было движения по полю Data детайл таблицы
1.- как в одной транзакции добавлять данные в мастер детайл таблицы,если к примеру
в мастер добавляется одна запись а в детал 10,хотя ето не важно.Связь делаю - автоинкриментное
поле в мастере и интежер поле в детайле,но ведь пока не пройдет транзакция ластавтоинк мастер
поля будет неизвестно??
2. - есть мастер таблица FIO char(70),MasterId AutoInc
и детайл Data DATE,MasterId INTEGER,Id AutoInc - так вот надо сделать выборку тех людей у которых к примеру 2 месяца не было движения по полю Data детайл таблицы
Re: Выборка в мастер детайле и ключевое поле
Для первого случая использую хранимую процедуру, которая выдает мне текущее значение генератора.
ух, ох....но ведь пока не пройдет транзакция ластавтоинк мастер
поля будет неизвестно??
www.ibase.ru/devinfo/generator.htm
ПОЛУЧИТЕ СНАЧАЛА ЗНАЧЕНИЕ ГЕНЕРАТОРА ДЛЯ МАСТЕРА.
И ИСПОЛЬЗУЙТЕ его в детали.
www.ibase.ru/devinfo/joins.htmу которых к примеру 2 месяца не было движения по полю Data детайл таблицы
плюс условие по дате.
наверное, что-то вродеkdv писал(а):а зачем процедура? и "текущее" - это как?_Mad_ писал(а):первого случая использую хранимую процедуру, которая выдает мне текущее значение генератора.
select gen_id(my_gen, 0) from rdb$database, только вот зачем в случае использования IBX (FIB+) и зачем в процедуре?
Имеется ввиду сгенерил ID для мастер таблицы в процедуреstix-s писал(а):наверное, что-то вродеkdv писал(а):а зачем процедура? и "текущее" - это как?_Mad_ писал(а):первого случая использую хранимую процедуру, которая выдает мне текущее значение генератора.
select gen_id(my_gen, 0) from rdb$database, только вот зачем в случае использования IBX (FIB+) и зачем в процедуре?
(вот так ID=gen_id(my_Gen,1)), а потом его использую в детейл таблице
Как соединить по джоин я знаю,меня интересует как раз условие по дате,просто не прикольно перелопачивать всю базу по каждой записи в мастере и соответствующему фильтру в детайле.kdv писал(а):ух, ох....но ведь пока не пройдет транзакция ластавтоинк мастер
поля будет неизвестно??
www.ibase.ru/devinfo/generator.htm
ПОЛУЧИТЕ СНАЧАЛА ЗНАЧЕНИЕ ГЕНЕРАТОРА ДЛЯ МАСТЕРА.
И ИСПОЛЬЗУЙТЕ его в детали.
www.ibase.ru/devinfo/joins.htmу которых к примеру 2 месяца не было движения по полю Data детайл таблицы
плюс условие по дате.
Если поставить Дата<'чето там' запрос выберет и тех у которых есть движение и после указаного периода.Дата = Нул - выберет у которых ваще нет движения,а мне надо выбрать тех у кого не было двыжения больше указаного срока.
это уж не текущее а следующее с шагом 1_Mad_ писал(а): Имеется ввиду сгенерил ID для мастер таблицы в процедуре
(вот так ID=gen_id(my_Gen,1)), а потом его использую в детейл таблице
и все равно не понял, зачем в процедуре?
у компонентов FIB+ (может и в IBX так же называется - не помню)есть такое интересное свойство AutoUpdateOptions и при инсерте запросто получается новое значение генератора
если уж нуллы так нужны добавить в условие is not null никак?Antarey писал(а): Если поставить Дата<'чето там' запрос выберет и тех у которых есть движение и после указаного периода.Дата = Нул - выберет у которых ваще нет движения,а мне надо выбрать тех у кого не было двыжения больше указаного срока.
Вопрос о нулах не подымался,там априори движение будет,stix-s писал(а):если уж нуллы так нужны добавить в условие is not null никак?Antarey писал(а): Если поставить Дата<'чето там' запрос выберет и тех у которых есть движение и после указаного периода.Дата = Нул - выберет у которых ваще нет движения,а мне надо выбрать тех у кого не было двыжения больше указаного срока.
повторяю еще раз надо выбрать тех у кого не было движения 2 мес
ну про нуллы не я первый заговорилAntarey писал(а): Вопрос о нулах не подымался,там априори движение будет,
повторяю еще раз надо выбрать тех у кого не было движения 2 мес
если наконец-то правильно понял, то в мастере - персоналии, в подчиненной множество записей дат для каждого персоналия, когда было какое либо телодвижение?
причем дата этого телодвижения бывает null?
Вопрос снимается
Если кому интересно
Если кому интересно
Код: Выделить всё
select Biling."FIO",Biling."Gorod",Biling."Street",max(Dvig."Data") LastOp
from Biling a
left join Dvig b on a.BilingId=b.BilingId
where max(b."Data")<'30.03.2007' or b."Data"=NULL
group by Biling."FIO",Biling."Gorod",Biling."Street"
ORDER BY Biling."FIO";