Форум: "Базы";
Текущий архив: 2005.11.06;
Скачать: [xml.tar.bz2];
ВнизКак сохранить запрос и сделать union с другим запросом Найти похожие ветки
← →
yk © (2005-09-21 13:51) [0]Уважаемые Мастера!
Помогите пожалуйста, со следующей задачей:
есть некоторое (неизвестное заранее) кол-во РАЗНЫХ ДЕТАЛЕЙ.
Каждая ДЕТАЛЬ может состоять из нек-рых ЭЛЕМЕНТОВ.
В разные детали могут входить одни и те же ЭЛЕМЕНТЫ.
Есть хранимая процедура -
РАЗОБРАТЬ(ИД_ДЕТАЛИ): ИД_ЭЛЕМНЕТА, КОЛ-ВО_ЭЛ_В_ДЕТАЛИ
Мне надо вывести итог : Сколько всего РАЗНЫХ ЭЛЕМЕНТОВ в этом НАБОРЕ ДЕТАЛЕЙ.
Хранимая процедура ВЫВОД_ЭЛЕМЕНТОВ(УСЛОВИЕ_ВЫБОРА_ДЕТАЛЕЙ)
returns
(ИД_ЭЛЕМЕНТА,
КОЛ-ВО_ЭЛ_В_НАБОРЕ)
begin
for
select ИД_ДЕТАЛИ, КОЛ-ВО_ДЕТАЛИ
form ДЕТАЛЬ
where УСЛОВИЕ_ВЫБОРА_ДЕТАЛЕЙ
into :ИД_ДЕТАЛИ,:КОЛ-ВО_ДЕТАЛИ
do
begin
select ИД_ЭЛЕМНЕТА,
(КОЛ-ВО_ЭЛ_В_ДЕТАЛИ*КОЛ-ВО_ДЕТАЛИ)
as ОБЩ_КОЛ-ВО_ЭЛ_В_ДЕТ
from РАЗОБРАТЬ(ИД_ДЕТАЛИ)
into :ИД_ЭЛЕМНЕТА,:ОБЩ_КОЛ-ВО_ЭЛ_В_ДЕТ
/*
А вот тут я незнаю что делать!!!
т.к. мне теперь надо сложить
все эти :ОБЩ_КОЛ-ВО_ЭЛ_В_ДЕТ
Это можно сделать
select
sum(ОБЩ_КОЛ-ВО_ЭЛ_В_ДЕТ)
from ???
group by ИД_ЭЛЕМНЕТА
Здесь ??? - это union всех запросов РАЗОБРАТЬ
Короче я незнаю как мне сохранить результаты запроса так,
чтобы потом к ним можно было сделат union в цикле
*/
end;
suspend
end;
INTERBASE
ПОМОГИТЕ ПОЖАЛУЙСТА!
← →
Johnmen © (2005-09-21 14:21) [1]Типа того ?
select ИД_ЭЛЕМНЕТА,
SUM(КОЛ-ВО_ЭЛ_В_ДЕТАЛИ*КОЛ-ВО_ДЕТАЛИ)
as ОБЩ_КОЛ-ВО_ЭЛ_В_ДЕТ
from РАЗОБРАТЬ(ИД_ДЕТАЛИ)
group by ИД_ЭЛЕМНЕТА
into :ИД_ЭЛЕМНЕТА,:ОБЩ_КОЛ-ВО_ЭЛ_В_ДЕТ
← →
yk © (2005-09-22 08:15) [2]типа того, только
Загвоздка в том, что
не просто
from РАЗОБРАТЬ(ИД_ДЕТАЛИ)
дело в том, что разных деталей может быть несколько
т.е.
ИТОГО_ДЛЯ_ЭЛ1=КОЛ_ДЕТ1*КОЛ_ЭЛ1_В_ДЕТ1+КОЛ_ДЕТ2*КОЛ_ЭЛ1_В_ДЕТ2+...+КОЛ_ДЕТn*КОЛ_ЭЛ1_В_ДЕТn
....
← →
evvcom © (2005-09-22 09:37) [3]
> yk © (22.09.05 08:15) [2]
Ну так а sum тебе на что?
← →
yk © (2005-09-23 11:06) [4]Вопрос:
Есть некоторый набор данных, собранный при помощи union
как мне сделать над этим набором данных
sum()
..
group by...
← →
Johnmen © (2005-09-23 11:12) [5]
> yk © (23.09.05 11:06) [4]
> Вопрос:
>
> Есть некоторый набор данных, собранный при помощи union
>
> как мне сделать над этим набором данных
>
> sum()
> ..
> group by...
Этот НД должен быть получен с пом.ХП. Тогда и селект из неё, и с сум, и с групбай, и с ...
:)
← →
yk © (2005-09-23 11:59) [6]жуть
а как же мне получить с помощью хп это?
У мен просто с помощью запроса выбираются нек-рое кол-во id-шников
а затем - скока ид-шников - стока и объединяемых с помощью union наборов данных (они получаются из хранимой процедуры другой)
т.е. мне надо сделать процеруру, которая бы объединяла произвольное кол-во наборов данных????
8(
← →
evvcom © (2005-09-23 12:25) [7]
> У мен просто с помощью запроса выбираются нек-рое кол-во
> id-шников
> а затем - скока ид-шников - стока и объединяемых с помощью
> union наборов данных
Чего ты там с union объединяешь? Id из одной таблицы? И приводи хоть какие-то куски запросов, только не в верхнем регистре, а то в глазах рябит от CapsLock.
← →
yk © (2005-09-23 12:50) [8]Извините за глаза
По кажному ид-шнику процедура
РАЗОБРАТЬ(ид_детали) возвращает набор элементов, входящих в деталь
вот эти наборы данных я и объединяю
← →
Johnmen © (2005-09-23 12:53) [9]
> yk © (23.09.05 11:59) [6]
> жуть
Да что ты...
> а затем - скока ид-шников - стока и объединяемых с помощью
> union наборов данных (они получаются из хранимой процедуры
> другой)
Вот она, эта ХП, и есть. Т.е. гонишь все эти НД наружу...:)
← →
yk © (2005-09-23 13:07) [10]Эврика!!!
Горячий чай делает чудеса!
я таки поняла как мне это заделать
описывать долго , но в итоге по Johnmen -ну
яду,яду мне ...
и молотком по затылку...
8))
всех люблю
← →
evvcom © (2005-09-23 13:38) [11]
> По кажному ид-шнику процедура
> РАЗОБРАТЬ(ид_детали) возвращает набор элементов, входящих
> в деталь
Это делается в одном запросе безо всяких union
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2005.11.06;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.036 c