powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Можно ли объединить следующие запросы или делать внутреннюю процедуру
20 сообщений из 20, страница 1 из 1
Можно ли объединить следующие запросы или делать внутреннюю процедуру
    #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
Можно ли объединить следующие запросы или делать внутреннюю процедуру
    #39128623
Sergey-2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Запросы по отдельности, то же как-то - не приятно гонять
...
Рейтинг: 0 / 0
Можно ли объединить следующие запросы или делать внутреннюю процедуру
    #39128629
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Sergey-2008!
You wrote on 15 декабря 2015 г. 14:55:13:

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

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

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

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

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

Некоторые люди физически неспособны найти простое решение для проблемы или игнорируют его,
поскольку их проктостоматологический велосипед работает. Ну подумаешь, ещё пара костылей
для мелких проблемок...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Можно ли объединить следующие запросы или делать внутреннюю процедуру
    #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
Можно ли объединить следующие запросы или делать внутреннюю процедуру
    #39128924
Sergey-2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общем теже яйца..., только в профиль... :)
...
Рейтинг: 0 / 0
Можно ли объединить следующие запросы или делать внутреннюю процедуру
    #39128931
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey-2008,

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

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


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