Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Последовательное выполнение Select [D5, IB5.x]


Страницы:   1 2

Maik ©   (2002-10-07 18:25:00) 

Как грамотно организовать в IB5.5+D5
последовательное выполнение
Select * from Table1 .....
затем
Select * from (Первый Select).....
потом
Select * from (Второй Select).....

предложения? ссылки?


Johnmen   (2002-10-08 10:18:00) [21]

Примерно так :
SELECT
A.kod1,
(SELECT SUM(summa) FROM Table1 B WHERE B.kod1=5) AS S1,
A.kod2,
(SELECT SUM(summa) FROM Table1 B WHERE B.kod2=6) AS S2,
FROM Table1 A
GROUP BY A.kod1, A.kod2


Maik   (2002-10-08 10:06:00) [22]

Johnmen © (08.10.02 09:24)
>Предложение - написать одним запросом...
Будьте добры подробнее.
Пример:
Есть Table1 вида (kod1,kod2,summa)
Необходимо посчитать sum(summa) для kod1=5
и sum(summa) для kod2=6 , получить результат в виде
одной строки(kod1,sum1,kod2,sum2)


Johnmen   (2002-10-08 09:24:00) [23]

Предложение - написать одним запросом...


Maik   (2002-10-08 09:19:00) [24]

Наталия © (08.10.02 06:16)
>В хранимых процедурах есть входные и выходные параметры
Есть то они есть,но попробуйте с помощью параметров
изменить порядок Group by,или Order By.
Можно конечно, но это уже будут разные Select.
1.Процедура будет громоздкой.
2.Нужно все варианты предусмотреть в хр.процедурах

На клиенте составить необходимый запрос гораздо легче.

Есть еще новые предложения по сути вопроса(без хранимых
процедур)?


Наталия   (2002-10-08 06:16:00) [25]

>Построение запроса зависит от
>нескольких условий,что влияет на поля выборки и на
>условия Group by.(нужно будет очень много хр.процедур)

В хранимых процедурах есть входные и выходные параметры.


Maik   (2002-10-07 23:28:00) [26]

>evgeg © (07.10.02 23:01)
Спасибо.
В общем можно действительно пойти по пути хр.процедур,
но хотелось бы найти решение для использования запросов
в Query на клиенте.Построение запроса зависит от
нескольких условий,что влияет на поля выборки и на
условия Group by.(нужно будет очень много хр.процедур)

А в общем проблема сводиться к обработке
Select с Union,необходимо выполнить Group by по всем строкам,посчитать sum
Не думаю,что проблема в подходе.


evgeg   (2002-10-07 23:03:00) [27]

А наиболее грамотно, возможно, пересмотреть решение вашей задачи. Почему то кажется, что вы пытаетесь решить ее с позиций локальных таблиц, а не SQL-сервера.


evgeg   (2002-10-07 23:01:00) [28]

Используйте хр. процедуры и for select.


create procedure proc1
returns (A integer, B verchar(100)
as
begin
for select A, B
from Table1 ...
into :A, :B
do
suspend;
end;

create procedure proc2
...
begin
for select A, B from proc1
...
end;


Maik   (2002-10-07 19:40:00) [29]

>AM (07.10.02 18:34)
>SELECT * FROM ( SELECT * FROM ( SELECT * FROM table1 ) )

Что не очень работает.
SELECT * FROM ( SELECT * FROM table1 ) записываем в Query
При запуске выдает:
General SQL error.Token unknown - line 1, char 16 select
Ругается на вложенный Select

Уточняю:
Первый Select содержит Union результат 10-ки тысяч записей
Второй Вычисляет Sum по некоторым полям первого: 100-ни записей
Третий просто добавляет кое-что из других таблиц


Johnmen   (2002-10-07 18:37:00) [30]

>AM (07.10.02 18:34)

Не надо, уважаемый ! Это же IB, а не Fox какой-нибудь...


AM   (2002-10-07 18:34:00) [31]


SELECT * FROM ( SELECT * FROM ( SELECT * FROM table1 ) )

это называется вложенные запросы...


Johnmen   (2002-10-07 18:30:00) [32]

А что, одним селектом никак ? :-)))


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо