Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.48 MB
Время: 0.046 c
3-1127815585
Андрей Жук
2005-09-27 14:06
2005.11.06
Шифрование данных в блобе


1-1129551717
Bagdat
2005-10-17 16:21
2005.11.06
Маска в StringGrid


3-1127472404
Top
2005-09-23 14:46
2005.11.06
Offline работа


2-1129298933
roma40
2005-10-14 18:08
2005.11.06
интернет


14-1129106888
Андрей Жук
2005-10-12 12:48
2005.11.06
Нынешняя молодежь - самая образованная в истории человечества





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский