Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2014.05.25;
Скачать: [xml.tar.bz2];

Вниз

Сгруппировать объединение...   Найти похожие ветки 

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

___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 с лишним.
Оно вроде понятно, первая работает по в меру индексированным полям, а вторая с хаотичным набором данных.

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


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

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

а в FB union нету?


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


> а в FB union нету?

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


 
sniknik ©   (2011-02-21 13:07) [3]

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


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


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

Еще нет...

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

group by Pole1

Так, что ли?

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


 
Sergey13 ©   (2011-02-21 14:11) [5]

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

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

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

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


 
sniknik ©   (2011-02-21 14:37) [6]

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


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


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

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


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


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

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

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


 
sniknik ©   (2011-02-21 16:50) [9]

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

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


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


 
Sergey13 ©   (2011-02-21 17:32) [10]

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

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

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

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


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


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


зато умеет view


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

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



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2014.05.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.002 c
2-1375798951
mfender
2013-08-06 18:22
2014.05.25
Появляются лишние символы при отправке TIdMultiPartFormDataStream


15-1385107572
Сергей
2013-11-22 12:06
2014.05.25
Решение задачи


15-1384896605
Юрий
2013-11-20 01:30
2014.05.25
С днем рождения ! 20 ноября 2013 среда


15-1384765946
KeyMouse
2013-11-18 13:12
2014.05.25
KVM бывают разные?


15-1384937184
Дмитрий СС
2013-11-20 12:46
2014.05.25
Просьба помочь с названиями.





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