Уважаемые Мастера!
Помогите пожалуйста, со следующей задачей:
есть некоторое (неизвестное заранее) кол-во РАЗНЫХ ДЕТАЛЕЙ.
Каждая ДЕТАЛЬ может состоять из нек-рых ЭЛЕМЕНТОВ.
В разные детали могут входить одни и те же ЭЛЕМЕНТЫ.
Есть хранимая процедура -
РАЗОБРАТЬ(ИД_ДЕТАЛИ): ИД_ЭЛЕМНЕТА, КОЛ-ВО_ЭЛ_В_ДЕТАЛИ
Мне надо вывести итог : Сколько всего РАЗНЫХ ЭЛЕМЕНТОВ в этом НАБОРЕ ДЕТАЛЕЙ.
Хранимая процедура ВЫВОД_ЭЛЕМЕНТОВ(УСЛОВИЕ_ВЫБОРА_ДЕТАЛЕЙ)
returns
(ИД_ЭЛЕМЕНТА,
КОЛ-ВО_ЭЛ_В_НАБОРЕ)
begin
for
select ИД_ДЕТАЛИ, КОЛ-ВО_ДЕТАЛИ
form ДЕТАЛЬ
where УСЛОВИЕ_ВЫБОРА_ДЕТАЛЕЙ
into :ИД_ДЕТАЛИ,:КОЛ-ВО_ДЕТАЛИ
do
begin
select ИД_ЭЛЕМНЕТА,
(КОЛ-ВО_ЭЛ_В_ДЕТАЛИ*КОЛ-ВО_ДЕТАЛИ)
as ОБЩ_КОЛ-ВО_ЭЛ_В_ДЕТ
from РАЗОБРАТЬ(ИД_ДЕТАЛИ)
into :ИД_ЭЛЕМНЕТА,:ОБЩ_КОЛ-ВО_ЭЛ_В_ДЕТ
/*
А вот тут я незнаю что делать!!!
т.к. мне теперь надо сложить
все эти :ОБЩ_КОЛ-ВО_ЭЛ_В_ДЕТ
Это можно сделать
select
sum(ОБЩ_КОЛ-ВО_ЭЛ_В_ДЕТ)
from ???
group by ИД_ЭЛЕМНЕТА
Здесь ??? - это union всех запросов РАЗОБРАТЬ
Короче я незнаю как мне сохранить результаты запроса так,
чтобы потом к ним можно было сделат union в цикле
*/
end;
suspend
end;
INTERBASE
ПОМОГИТЕ ПОЖАЛУЙСТА!
Как сохранить запрос и сделать union с другим запросом
-
- Заслуженный разработчик
- Сообщения: 1436
- Зарегистрирован: 15 сен 2005, 09:05
Re: Как сохранить запрос и сделать union с другим запросом
А без процедуры РАЗОБРАТЬ доступ к таблице элементов невозможен? Если возможен, то все тривиально:yk писал(а):Уважаемые Мастера!
есть некоторое (неизвестное заранее) кол-во РАЗНЫХ ДЕТАЛЕЙ.
Каждая ДЕТАЛЬ может состоять из нек-рых ЭЛЕМЕНТОВ.
В разные детали могут входить одни и те же ЭЛЕМЕНТЫ.
Есть хранимая процедура -
РАЗОБРАТЬ(ИД_ДЕТАЛИ): ИД_ЭЛЕМНЕТА, КОЛ-ВО_ЭЛ_В_ДЕТАЛИ
Мне надо вывести итог : Сколько всего РАЗНЫХ ЭЛЕМЕНТОВ в этом НАБОРЕ ДЕТАЛЕЙ.
SELECT count(DISTINCT ИД_ЭЛЕМЕНТА) FROM ДЕТАЛИ join ЭЛЕМЕНТЫ on ДЕТАЛИ.ИД_ДЕТАЛИ = ЭЛЕМЕНТЫ.ИД_ДЕТАЛИ where .....