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

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

Сгруппировать объединение... [FB 1.5]


Александр Т ©   (2011-02-21 10:24:00) 

___FB 1.5.5___

Две таблицы с идентичными полями. В обеих нужно сделать выборки, обе выборки объединить и сгруппировать по каким-то полям.
Решил двумя процедурами, причем вторая вызывает первую:

create procedure Proc1 returns (<набор полей>)
begin
 for select <набор полей> from Таблица 1
   where "Условия 1"
 into <:набор полей>
 do
   Suspend;

 for select <набор полей> from Таблица 2
   where "Условия 2"
 into <:набор полей>
 do
   Suspend;
end

create procedure Proc2 returns (<набор полей>)
begin
 for select <набор полей> from Proc1    
 into <:набор полей>
 GROUP BY "Поля группировки"
 do
   Suspend;
end


В общем-то работает...
Одно не нравится: как-то громоздко и если первая процедура выполняется, например за 16 мс, то вторая - за 400 с лишним.
Оно вроде понятно, первая работает по в меру индексированным полям, а вторая с хаотичным набором данных.

Но возможно ли как-то покрасивше ? :)


Александр Т   (2011-02-22 04:02:00) [1]

>to all
Спасибо :).


Игорь Шевченко   (2011-02-21 18:34:00) [2]


> Не умеет ФБ1.5 делать select from select


зато умеет view


Sergey13   (2011-02-21 17:32:00) [3]

> [8] Александр Т ©   (21.02.11 14:54)
> Разве что во вьюхе обе таблицы вместе слить, а уже по общей каше делать отбор и группировку...

Именно. Только Union Allне забудь.

> [9] sniknik ©   (21.02.11 16:50)

Не умеет ФБ1.5 делать select from select


sniknik   (2011-02-21 16:50:00) [4]

подзапросов тоже нет? -

SELECT Pole1, Count(*) AS Cnt  FROM (
 SELECT Pole1 FROM Table1
 UNION ALL
 SELECT Pole2 FROM Table2
)
GROUP BY Pole1


(могут быть вариации в синтаксисе)


Александр Т   (2011-02-21 14:54:00) [5]


> Сделай вьюху с union-ом

В select-е всякий раз условия where разные.
Разве что во вьюхе обе таблицы вместе слить, а уже по общей каше делать отбор и группировку...

Н-да, однако 99% что недоработка в проектировании БД.


Александр Т   (2011-02-21 14:46:00) [6]


примерно...
group by 1

да она по-любому будет только второйselect группировать


sniknik   (2011-02-21 14:37:00) [7]

> Так, что ли?
> Я ж не про group by вообще, а применительно к union-у
примерно...
group by 1
попробуй, или 0 смотря с чего там нумерация.


Sergey13   (2011-02-21 14:11:00) [8]

> [0] Александр Т ©   (21.02.11 10:24)

Сделай вьюху с union-ом, а по ней уже group by.

> Две таблицы с идентичными полями.

99% что недоработка в проектировании БД.


Александр Т   (2011-02-21 13:16:00) [9]


> еще IB 6.5 группировка была. рад?

Еще нет...

select Pole1 from Table1
union
select Pole_тоже_1 from Table2

group by Pole1

Так, что ли?

Я ж не про group by вообще, а применительно к union-у


sniknik   (2011-02-21 13:07:00) [10]

> А вот group by - фиг. Впрочем, если ошибаюсь, буду только рад :)
ошибаешься, не работал с FB но в еще IB 6.5 группировка была. рад?


Александр Т   (2011-02-21 12:57:00) [11]


> а в FB union нету?

Ну как же нету :)
И даже order by для результирующего набора дозволяет...
А вот group by - фиг. Впрочем, если ошибаюсь, буду только рад :)


clickmaker   (2011-02-21 11:12:00) [12]

> обе выборки объединить

а в FB union нету?


Наверх

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