Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.11.06;
Скачать: CL | DM;

Вниз

Как сохранить запрос и сделать 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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.029 c
14-1129402421
Карелин Артем
2005-10-15 22:53
2005.11.06
Тихо сам с собой комп ведет разговор...


14-1129572358
Bogdan1024
2005-10-17 22:05
2005.11.06
Transact-SQL за 2 дня


6-1121975092
redlord
2005-07-21 23:44
2005.11.06
изменить время отведенное на коннект


1-1129293783
sax_ol
2005-10-14 16:43
2005.11.06
Как определить имя контрола имея его Handle?


2-1128311386
Queer
2005-10-03 07:49
2005.11.06
mpeg2