Главная страница
    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.47 MB
Время: 0.04 c
3-1127827263
vishnia
2005-09-27 17:21
2005.11.06
Index is out of date - почему?


1-1129728289
diwww
2005-10-19 17:24
2005.11.06
Как отследыть событие "сворачивание окна" в TrayBar у формы?


14-1129545597
sergg
2005-10-17 14:39
2005.11.06
Такой же по качеству ресурс о Buildere?


3-1127813135
Wolferio
2005-09-27 13:25
2005.11.06
Удаление всех записей в базе.


1-1129286094
Sergey_R
2005-10-14 14:34
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский