Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Можно ли объединить следующие запросы или делать внутреннюю процедуру / 20 сообщений из 20, страница 1 из 1
15.12.2015, 14:50
    #39128618
Sergey-2008
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли объединить следующие запросы или делать внутреннюю процедуру
Доброе время суток форумчане,
у меня в приложении есть несколько таблиц, и 5 DBComboBox, заполняющихся (каждый с нескольких таблиц) следующими запросами:

1-ый и 2-ой DBComboBox

Код: sql
1.
2.
3.
4.
5.
6.
select distinct * from
(select ORGANIZATION from SHOP1
where ORGANIZATION is not null
union
select STORED from SHOP2 where STORED is not null ) O,
(select min(YEAR_CREATE) as MIN_YEAR, max(YEAR_CREATE) as MAX_YEAR from SHOP1) Y



3-ий DBComboBox
Код: sql
1.
2.
3.
4.
select POSITION from SHOP1
where POSITION is not null
union
select POSITION_PEOPLE from USERS_DATA where POSITION_PEOPLE is not null



4-ый DBComboBox
Код: sql
1.
2.
3.
4.
select DEGREE from SHOP1
where DEGREE is not null
union
select DEGREE from USERS_DATA where DEGREE is not null



5-ый DBComboBox

Код: sql
1.
2.
3.
4.
select RANK from SHOP1
where RANK is not null
union
select RANK from USERS_DATA where RANK is not null


Я хотел узнать, можно ли их объединить в один запрос?
Или для повышения скорости делать внутреннюю процедуру, и загнать туда эти запросы, а ответом процедуры будут только соответствующие наборы?
Все эти данные есть в нескольких DataSet, но запрос быстрее будет работать, чем перебор строк в DataSet с условием?

Спасибо заранее.
...
Рейтинг: 0 / 0
15.12.2015, 14:52
    #39128623
Sergey-2008
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли объединить следующие запросы или делать внутреннюю процедуру
Запросы по отдельности, то же как-то - не приятно гонять
...
Рейтинг: 0 / 0
15.12.2015, 14:55
    #39128629
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли объединить следующие запросы или делать внутреннюю процедуру
Hello, Sergey-2008!
You wrote on 15 декабря 2015 г. 14:55:13:

Sergey-2008> Запросы по отдельности, то же как-то - не приятно гонятьгоняй.
терпи и гоняй.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
15.12.2015, 15:40
    #39128687
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли объединить следующие запросы или делать внутреннюю процедуру
Sergey-2008,

если данные в запросах union не пересекаются, тогда используй union all, а то огребешь по производительности, особенно с комбобоксами.
...
Рейтинг: 0 / 0
15.12.2015, 15:53
    #39128719
WildSery
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли объединить следующие запросы или делать внутреннюю процедуру
kdv,

Неужели сортировка нескольких записей комбобокса ударит по производительности?
(если их там сотни/тысячи, то разумность такого комбобокса само по себе под вопросом)
...
Рейтинг: 0 / 0
15.12.2015, 16:03
    #39128737
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли объединить следующие запросы или делать внутреннюю процедуру
WildSery,

все дело в привычках. если знаешь разницу между union и union all, всегда используешь union all, и изредка union. А если привычки нет, то ...
...
Рейтинг: 0 / 0
15.12.2015, 16:18
    #39128774
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли объединить следующие запросы или делать внутреннюю процедуру
kdvесли знаешь разницу между union и union all, всегда используешь union all, и
изредка union.
А если получил ещё левель ап, то больше не делаешь в базе однотипных таблиц и не
нуждаешься в юнионах вообще.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
15.12.2015, 16:31
    #39128801
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли объединить следующие запросы или делать внутреннюю процедуру
Dimitry Sibiryakov,

судя по таблицам у автора какая-то хитровымудреная схема, значит, зачем-то она так была сделана.
...
Рейтинг: 0 / 0
15.12.2015, 16:38
    #39128810
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли объединить следующие запросы или делать внутреннюю процедуру
kdvу автора какая-то хитровымудреная схема, значит, зачем-то она так была сделана.

Некоторые люди физически неспособны найти простое решение для проблемы или игнорируют его,
поскольку их проктостоматологический велосипед работает. Ну подумаешь, ещё пара костылей
для мелких проблемок...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
15.12.2015, 17:51
    #39128923
Sergey-2008
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли объединить следующие запросы или делать внутреннюю процедуру
Так люди я так и не понял, мне тогда получается 4 раза DBQuery напрягать...

Я просто думал одним разом... и в дамках... И ууу...ухх...

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
create or alter procedure SP_FULL_COMBO_BOX
returns (
    OUT_DEGREE SCIENTIST,
    OUT_POSITION SCIENTIST,
    OUT_RANK SCIENTIST,
    OUT_ORGANIZATION NAME_ORGANIZATION,
    OUT_MIN_YEAR integer,
    OUT_MAX_YEAR integer)
as
declare variable VAR_MIN_YEAR_G integer;
declare variable VAR_MAX_YEAR_G integer;
declare variable VAR_MIN_YEAR_R integer;
declare variable VAR_MAX_YEAR_R integer;
begin
  for
    select KEEP_POSITION
      from GOV_ETALON
        where KEEP_POSITION is not null
    union
      select POSITION_PEOPLE
        from USERS_DATA
          where POSITION_PEOPLE is not null
    into :OUT_POSITION
  do
  begin
    OUT_POSITION = :OUT_POSITION;
    suspend;
  end

  for
    select KEEP_DEGREE
      from GOV_ETALON
        where KEEP_DEGREE is not null
    union
      select DEGREE
        from USERS_DATA
          where DEGREE is not null
    into :OUT_DEGREE
  do
  begin
    OUT_DEGREE = :OUT_DEGREE;
    OUT_POSITION = null;
    suspend;
  end

  for
    select KEEP_RANK
      from GOV_ETALON
        where KEEP_RANK is not null
    union
      select RANK
        from USERS_DATA
          where RANK is not null
    into :OUT_RANK
  do
  begin
    OUT_RANK = :OUT_RANK;
    OUT_DEGREE = null;
    suspend;
  end

  for
    select KEEP_ORGANIZATION
      from GOV_ETALON
        where KEEP_ORGANIZATION is not null
    union
    select STORED_ETALON
      from REGISTER_ETALON
        where STORED_ETALON is not null
    into :OUT_ORGANIZATION
  do
  begin
    OUT_ORGANIZATION = :OUT_ORGANIZATION;
    OUT_RANK = null;
    suspend;
  end

  select min(YEAR_ETALON), max(YEAR_ETALON)
    from GOV_ETALON
    into :VAR_MIN_YEAR_G,
         :VAR_MAX_YEAR_G;

  select min(YEAR_ETALON), max(YEAR_ETALON)
    from REGISTER_ETALON
    into :VAR_MIN_YEAR_R,
         :VAR_MAX_YEAR_R;

  if (VAR_MIN_YEAR_R < VAR_MIN_YEAR_G) then
    OUT_MIN_YEAR = VAR_MIN_YEAR_R;
  else OUT_MIN_YEAR = VAR_MIN_YEAR_G;
  OUT_ORGANIZATION = null;
  suspend;

  if (VAR_MAX_YEAR_R < VAR_MAX_YEAR_G) then
    OUT_MAX_YEAR = VAR_MAX_YEAR_G;
  else OUT_MAX_YEAR = VAR_MAX_YEAR_R;
  OUT_MIN_YEAR = null;
  suspend;
end
...
Рейтинг: 0 / 0
15.12.2015, 17:52
    #39128924
Sergey-2008
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли объединить следующие запросы или делать внутреннюю процедуру
В общем теже яйца..., только в профиль... :)
...
Рейтинг: 0 / 0
15.12.2015, 17:59
    #39128931
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли объединить следующие запросы или делать внутреннюю процедуру
Sergey-2008,

Н-да... шедевр...
...
Рейтинг: 0 / 0
15.12.2015, 18:04
    #39128941
Sergey-2008
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли объединить следующие запросы или делать внутреннюю процедуру
ну, я пока наченаю писать... вообщем (такк что не сильно, если можно...)
...
Рейтинг: 0 / 0
15.12.2015, 18:05
    #39128945
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли объединить следующие запросы или делать внутреннюю процедуру
Sergey-2008Я просто думал одним разом... и в дамках... И ууу...ухх...
Что, акк "Kos-2010" забанили?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
15.12.2015, 18:10
    #39128955
Sergey-2008
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли объединить следующие запросы или делать внутреннюю процедуру
Нет, просто тут еще Сергей появился, Константин пока в отлучке :)
...
Рейтинг: 0 / 0
15.12.2015, 18:11
    #39128956
Sergey-2008
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли объединить следующие запросы или делать внутреннюю процедуру
А ящик общий
...
Рейтинг: 0 / 0
15.12.2015, 18:13
    #39128958
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли объединить следующие запросы или делать внутреннюю процедуру
семья из трех студентов... (с)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
15.12.2015, 18:15
    #39128964
Sergey-2008
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли объединить следующие запросы или делать внутреннюю процедуру
Почему это из трех, на больше :)
...
Рейтинг: 0 / 0
15.12.2015, 18:18
    #39128968
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли объединить следующие запросы или делать внутреннюю процедуру
Мимопроходящийсемья из трех студентов... (с)
Числа в никах это обычно год рождения...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
15.12.2015, 18:20
    #39128975
Ivan_Pisarevsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли объединить следующие запросы или делать внутреннюю процедуру
бредовая задача, бредовая постановка и бредовое решение.

Не вижу смысла в дальнейшем флуде.
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Можно ли объединить следующие запросы или делать внутреннюю процедуру / 20 сообщений из 20, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]