powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Union вопрос к разработчикам
43 сообщений из 43, показаны все 2 страниц
Union вопрос к разработчикам
    #38919896
Евгений Болтик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тут дурная мысль пришла и полез в очередной раз искать варианты в Интернете.
Увидел https://ru.wikipedia.org/wiki/Union_(SQL)

увидел то что мне надо

Код: plsql
1.
2.
3.
(SELECT person, amount FROM sales2005 WHERE amount=1000)
UNION
(SELECT person, amount FROM sales2005 WHERE person LIKE 'Сергей')


но такое не прокатывает силекты в скобках сервер не понял

Если были бы скобочки поддерживались, то можно было бы сортировку для каждого запроса указать на данный момент это мне надо. Хотя я уже не раз SELECT ... FROM (SELECT person, amount FROM) городил

Что по скобочкам говорит стандарт? А то может тот кто писал статью не знает об этом и я рано обрадовался.
...
Рейтинг: 0 / 0
Union вопрос к разработчикам
    #38919911
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений БолтикЕсли были бы скобочки поддерживались, то можно было бы сортировку для каждого запроса указать
про взаимосвязь скобочек и отдельной сортировки ты сам придумал?
и мне тоже интересно, какой сервер в твоей ссылке для union поддерживает скобки.
Order by по стандарту сортирует конечное множество результата запроса.
Хочешь странные сортировки - пиши селективную процедуру, и там ставь запросы и сортировку в них в любом порядке.
...
Рейтинг: 0 / 0
Union вопрос к разработчикам
    #38919918
Евгений Болтик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvЕвгений БолтикЕсли были бы скобочки поддерживались, то можно было бы сортировку для каждого запроса указать
про взаимосвязь скобочек и отдельной сортировки ты сам придумал?
и мне тоже интересно, какой сервер в твоей ссылке для union поддерживает скобки.
Order by по стандарту сортирует конечное множество результата запроса.
Хочешь странные сортировки - пиши селективную процедуру, и там ставь запросы и сортировку в них в любом порядке.

Не понял вопроса, наверно туповато описал ситуацию. Я имел ввиду, что тогда есть возможность написать без хранимых процедур и заморочек:
Код: plsql
1.
2.
3.
(SELECT person, amount FROM sales2005 WHERE amount=1000 order by person)
UNION
(SELECT first 1 person, amount FROM sales2005 WHERE person LIKE 'Сергей'  order by person desc)



просто стало действительно интересно, неужели в стандарте есть скобочки. Тогда это могло бы дать возможность переписать по другому, с более простым видом.
...
Рейтинг: 0 / 0
Union вопрос к разработчикам
    #38919929
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений Болтик,

да я понял. только скобочки, даже если бы и были, тебе не помогут. ну не делают order by у разных частей union, что со скобочками, что без.
...
Рейтинг: 0 / 0
Union вопрос к разработчикам
    #38919940
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений Болтик> Хотя я уже не раз SELECT ... FROM (SELECT person, amount FROM) городил

Так а в чём проблема тогда, лень лишний Select написать ?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Union вопрос к разработчикам
    #38919986
Евгений Болтик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамЕвгений Болтик> Хотя я уже не раз SELECT ... FROM (SELECT person, amount FROM) городил

Так а в чём проблема тогда, лень лишний Select написать ?


Что ж вы так снова на меня. Лично я ничего нового не предложил я просто процитировал увиденное. По началу помнится SELECT ... FROM (SELECT FROM) тоже не хотели городить, но потом как то раз и написали. using тоже не было и т.д.

Читабельность проще. Просто если скобки есть, то это должно говорить о том, что можно с городить огород который я описал т.к. order by или group by тогда допустим внутри.

Странно только почему не расширить возможности. Вы сразу идею в топку. Я и без этого понимаю, что можно к верх ногами делать и без нововведений. Что и делаю уже не первый год.
...
Рейтинг: 0 / 0
Union вопрос к разработчикам
    #38920029
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений БолтикВы сразу идею в топку.
ради интереса
1. найди и приведи тут сервер, в котором вот такой синтаксис union, со скобками.
2. найди и приведи тут сервер, в котором в обоих частях union можно указывать order by (таким образом, как ты хочешь).
...
Рейтинг: 0 / 0
Union вопрос к разработчикам
    #38920088
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений Болтик> Что ж вы так снова на меня. Вы сразу идею в топку.

Во-первых, лично я не снова, первый раз вроде.
Во-вторых, не в топку, это Дима на тебя накинулся.
Идея как идея, но в текущем изложении (синтаксисе)
противоречит стандарту, и как её "облегчить" лично
я не вижу. При чём не только из-за скобочек, IIRC.

> Читабельность проще.

Это да, не спорю. Но по сути там экономия только на
"Select *" ради синтаксического сахара. Хотя в свете
последних веяний я ничему особо не удивлюсь.

P.S. Раньше такое делали доп.полем, если сортировка
не разнонаправленная.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Union вопрос к разработчикам
    #38920119
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам это Дима на тебя накинулся.
я не накинулся, просто у меня от таких хотелок становится кислое выражение лица.

кстати, интересно, можно ли было бы сымитировать такую штуку с ClientDataSet. То есть, сначала загнать в него результат одного запроса, а потом добавить результат второго?

И еще. Идеологически, допустим, если бы такая фича (сортировка каждого запроса union) была, она имела бы смысл только для UNION ALL. Потому что просто UNION выкидывает повторы. И если повторы есть, то при раздельной сортировке откуда тогда их выкидывать? Из первого или второго объединяемых наборов? И в итоге получилось бы натуральное "рыбу заворачиваем" - если это union all, то все ок; если это union, то не допускаем несколько order by; если в union all только один order by, то сортируем все, а если в union all несколько order by, то не сортируем результат...
Мешанина.
...
Рейтинг: 0 / 0
Union вопрос к разработчикам
    #38920125
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv,

Вы полностью описали, как я хотел бы это видеть :)
имхо все логично и очевидно
...
Рейтинг: 0 / 0
Union вопрос к разработчикам
    #38920133
Евгений Болтик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvЕвгений БолтикВы сразу идею в топку.
ради интереса
1. найди и приведи тут сервер, в котором вот такой синтаксис union, со скобками.
2. найди и приведи тут сервер, в котором в обоих частях union можно указывать order by (таким образом, как ты хочешь).

Начал поиск. Попал сюда
http://www.cyberforum.ru/sql-server/thread847220.html

далее окромя того кто создал это я не могу идти. Иду к создателю зверя
https://msdn.microsoft.com/ru-ru/library/ms180026.aspx
Код: sql
1.
2.
3.
4.
5.
 { <query_specification> | ( <query_expression> ) } 
  UNION [ ALL ] 
  <query_specification | ( <query_expression> ) 
 [ UNION [ ALL ] <query_specification> | ( <query_expression> ) 
    [ ...n ] ] 



начинает интересовать query_expression

https://msdn.microsoft.com/ru-ru/library/ms189499.aspx
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
<SELECT statement> ::=  
    [WITH <common_table_expression> [,...n]]
    <query_expression> 
    [ ORDER BY { order_by_expression | column_position [ ASC | DESC ] } 
  [ ,...n ] ] 
    [ <FOR Clause>] 
    [ OPTION ( <query_hint> [ ,...n ] ) ] 
<query_expression> ::= 
    { <query_specification> | ( <query_expression> ) } 
    [  { UNION [ ALL ] | EXCEPT | INTERSECT }
        <query_specification> | ( <query_expression> ) [...n ] ] 
<query_specification> ::= 
SELECT [ ALL | DISTINCT ] 
    [TOP ( expression ) [PERCENT] [ WITH TIES ] ] 
    < select_list > 
    [ INTO new_table ] 
    [ FROM { <table_source> } [ ,...n ] ] 
    [ WHERE <search_condition> ] 
    [ <GROUP BY> ] 
    [ HAVING < search_condition > ] 



нашли искомое оно выражается как
Код: sql
1.
2.
3.
4.
<query_expression> ::= 
    { <query_specification> | ( <query_expression> ) } 
    [  { UNION [ ALL ] | EXCEPT | INTERSECT }
        <query_specification> | ( <query_expression> ) [...n ] ] 



обрати внимание <query_specification> не допускает сортировок
а вот <query_expression> это и есть обычный SELECT со всеми вытекающими

посему вывод раз могут быть вложенные union то законно может быть такой запрос
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
(SELECT person, amount FROM sales2005 WHERE amount=1000)
UNION
select first 1 ... from (
    (SELECT person, amount FROM sales2005 WHERE amount=1000)
    UNION
    (SELECT person, amount FROM sales2005 WHERE person LIKE 'Сергей')
  order by 1)
)
...
Рейтинг: 0 / 0
Union вопрос к разработчикам
    #38920135
na-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
na-
Гость
kdvЕвгений БолтикВы сразу идею в топку.
ради интереса
1. найди и приведи тут сервер, в котором вот такой синтаксис union, со скобками.
2. найди и приведи тут сервер, в котором в обоих частях union можно указывать order by (таким образом, как ты хочешь).
Возможно Firebird будет первым, кто реализует этот удобный и всем понятный синтаксис. Потом подтянутся другие срвера. А потом и в стандарте пропишут.
...
Рейтинг: 0 / 0
Union вопрос к разработчикам
    #38920146
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений Болтикобрати внимание <query_specification> не допускает сортировок
а вот <query_expression> это и есть обычный SELECT со всеми вытекающими
Да ну? У тебя и с чтением плохо?..

Код: sql
1.
2.
<query_expression> ::=
     { <query_specification> | ( <query_expression> ) } 


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Union вопрос к разработчикам
    #38920147
Евгений Болтик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамЕвгений Болтик> Что ж вы так снова на меня. Вы сразу идею в топку.

Во-первых, лично я не снова, первый раз вроде.
Во-вторых, не в топку, это Дима на тебя накинулся.
Идея как идея, но в текущем изложении (синтаксисе)
противоречит стандарту, и как её "облегчить" лично
я не вижу. При чём не только из-за скобочек, IIRC.

> Читабельность проще.

Это да, не спорю. Но по сути там экономия только на
"Select *" ради синтаксического сахара. Хотя в свете
последних веяний я ничему особо не удивлюсь.

P.S. Раньше такое делали доп.полем, если сортировка
не разнонаправленная.


Еще есть одна проблема, если ты с таким мало сталкивался, то кол-во контекстов иногда зашкаливает и разбить как то надо на 2 тела. Вот тут и начинаешь танец в бубном. Дополнительные поля в таблицу и триггеры один за другим по определенной логике работы с повторами чтений данных которые вроде как в первом триггере делал (жаль переменные для триггеров у таблицы не могут быть общие, на изменение одной записи.). Я уже смерился с двойным чтением.
...
Рейтинг: 0 / 0
Union вопрос к разработчикам
    #38920152
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
na-будет первым, кто реализует этот удобный и всем понятный синтаксис.
а мне кажется что это чешуя, а не "понятный синтаксис", и нарушение стандарта. Я знаю, что отклонения от стандарта допускаются, но...

хочу реальный пример (прикладной) вывода
select order by
union all
select order by
где результаты отсортированы отдельно.

p.s. подозреваю, что пример будет похож на
Код: sql
1.
2.
3.
select A, B
from ...
ORDER BY C


то есть когда хрен поймешь, по какому критерию это все отсортировано.
...
Рейтинг: 0 / 0
Union вопрос к разработчикам
    #38920155
Евгений Болтик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovЕвгений Болтикобрати внимание <query_specification> не допускает сортировок
а вот <query_expression> это и есть обычный SELECT со всеми вытекающими
Да ну? У тебя и с чтением плохо?..

Код: sql
1.
2.
<query_expression> ::=
     { <query_specification> | ( <query_expression> ) } 




Естественно я это видел, я долго тупил и перечитывал не понимая, а что же они все таки этим считали. В инете смотрел примеры и сравнивал с описанным в MS.
Но смыл заключается в том, что человек запускал похожий запрос.

Вот еще, но там я так понял человек не учел, что desc вернет записи в обратном порядке, во втором подзапросе:
http://forum.sources.ru/index.php?showtopic=136262
...
Рейтинг: 0 / 0
Union вопрос к разработчикам
    #38920157
Евгений Болтик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvna-будет первым, кто реализует этот удобный и всем понятный синтаксис.
а мне кажется что это чешуя, а не "понятный синтаксис", и нарушение стандарта. Я знаю, что отклонения от стандарта допускаются, но...

хочу реальный пример (прикладной) вывода
select order by
union all
select order by
где результаты отсортированы отдельно.

p.s. подозреваю, что пример будет похож на
Код: sql
1.
2.
3.
select A, B
from ...
ORDER BY C


то есть когда хрен поймешь, по какому критерию это все отсортировано.

Тока не надо критики. Я просто экспериментировал мне надо было результат получить и по ошибке применил такую схему из другого запроса.

Но там действительно выборки были с обратной сортировкой и все записи которые будут удовлетворять. Тут оказалось нужна одна запись и это решилось через coalesce.

Код: 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.
select WI_Shops_ID, coalesce(FindContr_ID, Contr_ID) as Contr_ID, cast(DateFrom as date) as DateFrom,
count(*) as all_count, 
sum(iif(b_IsBit(Flags, 2) = 1 and b_IsBit(Flags, 10) = 0, 1, 0)) as new_count, 
sum(iif(b_IsBit(Flags, 4) = 1, 1, 0)) as old_count, 
sum(iif(b_IsBit(Flags, 6) = 1, 1, 0)) as find_count,
min((
  select first 1 ValueData from 
  (
  select ValueData from (select ValueData from Banker_Price where TypeID = 2 and DateFrom <= H.DateFrom and 
    WI_Shops.Banker_ID = Banker_ID and Seller_ID = WI_Shops.Seller_ID and SellerAddr_ID = WI_Shops.SellerAddr_ID
    order by Banker_ID desc, Seller_ID desc, SellerAddr_ID desc, TypeID desc, DateFrom desc)
    group by 1     
  union all
  select ValueData from (select ValueData from Banker_Price where TypeID = 2 and DateFrom <= H.DateFrom and
    WI_Shops.Banker_ID = Banker_ID and Seller_ID = WI_Shops.Seller_ID and SellerAddr_ID is null
    order by Banker_ID desc, Seller_ID desc, SellerAddr_ID desc, TypeID desc, DateFrom desc)     
  union all
  select ValueData from (select ValueData from Banker_Price where TypeID = 2 and DateFrom <= H.DateFrom and
    WI_Shops.Banker_ID = Banker_ID and Seller_ID is null and SellerAddr_ID is null
    order by Banker_ID desc, Seller_ID desc, SellerAddr_ID desc, TypeID desc, DateFrom desc)     
  ) )) as Price01,
min((select first 1 ValueData from 
  (select ValueData from (select ValueData from Banker_Price where TypeID = 3 and DateFrom <= H.DateFrom and
    WI_Shops.Banker_ID = Banker_ID and Seller_ID = WI_Shops.Seller_ID and SellerAddr_ID =WI_Shops.SellerAddr_ID
    order by Banker_ID desc, Seller_ID desc, SellerAddr_ID desc, TypeID desc, DateFrom desc)     
  union all
  select ValueData from (select ValueData from Banker_Price where TypeID = 3 and DateFrom <= H.DateFrom and
    WI_Shops.Banker_ID = Banker_ID and Seller_ID = WI_Shops.Seller_ID and SellerAddr_ID is null
    order by Banker_ID desc, Seller_ID desc, SellerAddr_ID desc, TypeID desc, DateFrom desc)     
  union all
  select ValueData from (select ValueData from Banker_Price where TypeID = 3 and DateFrom <= H.DateFrom and
    WI_Shops.Banker_ID = Banker_ID and Seller_ID is null and SellerAddr_ID is null
    order by Banker_ID desc, Seller_ID desc, SellerAddr_ID desc, TypeID desc, DateFrom desc)     
  ) )) as Price02
from H_Req H, WI_Shops where H.WI_Shops_ID = WI_Shops.ID 
group by 1, 2, 3
...
Рейтинг: 0 / 0
Union вопрос к разработчикам
    #38920165
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvхочу реальный пример (прикладной) вывода
select order by
union all
select order by
Пожалуйста. Регулярно надо:

Код: sql
1.
2.
3.
SELECT 0 AS ID, '(Все)' AS NAME FROM RDB$DATABASE
UNION ALL
SELECT ID, NAME FROM <TABLE> --ORDER BY ID. Все ID положительные



Сейчас приходится делать так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT
  DATA.ID,
  DATA.NAME
FROM
(SELECT 0 AS ID, '(Все)' AS NAME FROM RDB$DATABASE
UNION ALL
SELECT ID, NAME FROM <TABLE>
) DATA
ORDER BY DATA.ID


много лишней писанины
...
Рейтинг: 0 / 0
Union вопрос к разработчикам
    #38920173
na-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
na-
Гость
YuRockkdvхочу реальный пример (прикладной) вывода
select order by
union all
select order by
Пожалуйста. Регулярно надо:

Код: sql
1.
2.
3.
SELECT 0 AS ID, '(Все)' AS NAME FROM RDB$DATABASE
UNION ALL
SELECT ID, NAME FROM <TABLE> --ORDER BY ID. Все ID положительные


Вот так будет ещё жизненней:
Код: sql
1.
2.
3.
(SELECT 0 AS ID, '(Все)' AS NAME FROM RDB$DATABASE)
UNION ALL
(SELECT ID, NAME FROM <TABLE> ORDER BY NAME)
...
Рейтинг: 0 / 0
Union вопрос к разработчикам
    #38920174
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock,

а ты не пробовал так и написать ???

Код: sql
1.
2.
3.
4.
SELECT 0 AS ID, '(Все)' AS NAME FROM RDB$DATABASE
UNION ALL
SELECT ID, NAME FROM <TABLE> 
ORDER BY ID
...
Рейтинг: 0 / 0
Union вопрос к разработчикам
    #38920176
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladа ты не пробовал так и написать ???
Пробовал. invalid ORDER BY clause получал.

Возможно, будь у меня сервер поновее, там бы это и можно было сделать. Но все равно это не идеально - обязательно сортировать весь результат. Вдруг мне надо только половину? Например, "Закрепленные" строки, и все остальные
...
Рейтинг: 0 / 0
Union вопрос к разработчикам
    #38920183
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockПробовал. invalid ORDER BY clause получал.order by 1

YuRockНо все равно это не идеально - обязательно сортировать весь результат.Обеспечь соответствующее условие сортировки. Тыжпрограммист, ы ?
...
Рейтинг: 0 / 0
Union вопрос к разработчикам
    #38920185
Евгений Болтик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladYuRock,

а ты не пробовал так и написать ???

SELECT 0 AS ID, '(Все)' AS NAME FROM RDB$DATABASE
UNION ALL
SELECT ID, NAME FROM <TABLE>
ORDER BY ID

К тебе письма дошли?
...
Рейтинг: 0 / 0
Union вопрос к разработчикам
    #38920186
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений БолтикК тебе письма дошли?Дошли, я позже отвечу.
...
Рейтинг: 0 / 0
Union вопрос к разработчикам
    #38920187
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladorder by 1
Спасибо, работает, возьму на вооружение. И как я раньше не догадался
hvladYuRockНо все равно это не идеально - обязательно сортировать весь результат.Обеспечь соответствующее условие сортировки. Тыжпрограммист, ы ?
Мне нужно из одной и той же таблицы получать одни и те же значения (ид и названия). Но сортировать по разным полям (пример - закрепленные и нет темы форума).
Вижу 3 варианта:
1. Добавление 3-го говнополя для сортировки ORDER BY 3
2. селективная процедура;
3. Манипуляции с select from select

Больше ничё в голову не лезет пока. Все три варианта мне не нравятся.
...
Рейтинг: 0 / 0
Union вопрос к разработчикам
    #38920228
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Женя, а зачем вот в этом запросе 17445819 во вложенных запросах order by? просто случайно остались, или ....?
Из них же никакого "показа" данных нет.
...
Рейтинг: 0 / 0
Union вопрос к разработчикам
    #38920259
Евгений Болтик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvЖеня, а зачем вот в этом запросе 17445819 во вложенных запросах order by? просто случайно остались, или ....?
Из них же никакого "показа" данных нет.

Для лучшего понимания наверно лучше показать так. Нужно только 3 строки или больше по желанию, но по определенным условиям с последних дат за период
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
  select first 3 F1, F2, F3 from 
  (
  (select first 3 F1, F2, F3 from T1 where DateFrom between H.DateFrom and H.DateTo and 
    WI_Shops.Banker_ID = Banker_ID and Seller_ID = WI_Shops.Seller_ID and SellerAddr_ID = WI_Shops.SellerAddr_ID
    order by Banker_ID desc, Seller_ID desc, SellerAddr_ID desc, TypeID desc, DateFrom desc)
  union all
  (select first 3 F1, F2, F3 from T2 where DateFrom between H.DateFrom and H.DateTo and
    WI_Shops.Banker_ID = Banker_ID and Seller_ID = WI_Shops.Seller_ID and SellerAddr_ID is null
    order by Banker_ID desc, Seller_ID desc, SellerAddr_ID desc, TypeID desc, DateFrom desc)     
  union all
  (select first 3 F1, F2, F3 from T3 where DateFrom between H.DateFrom and H.DateTo and
    WI_Shops.Banker_ID = Banker_ID and Seller_ID is null and SellerAddr_ID is null
    order by Banker_ID desc, Seller_ID desc, SellerAddr_ID desc, TypeID desc, DateFrom desc)     
  )
...
Рейтинг: 0 / 0
Union вопрос к разработчикам
    #38920276
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений Болтик,

union all не сортирует результат, и я так понимаю, что при first 3 будут выданы 3 записи от первого запроса, при first 4 - 3 первого и 1 второго, и т.д.? При том, что у запросов, объединяемых union, разные условия выборки?
я опять не врубаюсь, что это за выдача данных такая.
...
Рейтинг: 0 / 0
Union вопрос к разработчикам
    #38920294
Евгений Болтик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvЕвгений Болтик,

union all не сортирует результат, и я так понимаю, что при first 3 будут выданы 3 записи от первого запроса, при first 4 - 3 первого и 1 второго, и т.д.? При том, что у запросов, объединяемых union, разные условия выборки?
я опять не врубаюсь, что это за выдача данных такая.

Оконечная сортировка неважна (да и при необходимости она не проблема)
каждый из подзапросов возвращает данные из разных таблиц и они выходят в том виде, что надо клиенту причем одним селектом.
Причем мы рассматривает очень простые примеры. У меня иногда крышу срывает от предложенной логики клиентом. Все логично но так запутанно и интересно.

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

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
select first 6 F1, F2, F3 from 
  (
  (select first 2
    order by ... desc)
  union all
  (select first 4
    order by ... desc)
  union all
  (select first 6
    order by ... desc)
  )



PS. Лично я уже давно перестал, сразу ворчать на клиента, что клиент хочет какую то хрень. Последний клиент мне столько интересного преподнес в части данных, что я 60 дней почти со стула не встаю. Идеи прут времени не хватает.
...
Рейтинг: 0 / 0
Union вопрос к разработчикам
    #38920323
Евгений Болтик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да еще один момент задатки у сервер научить понимать новые запросы уже есть, если проанализировать

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
select first 6 F1, F2, F3 from 
  (
  select F1, F2, F3 from (select first 2
    order by ... desc)
  union all
  select F1, F2, F3 from (select first 4
    order by ... desc)
  union all
  select F1, F2, F3 from (select first 6
    order by ... desc)
  )



то получается если написать
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
select first 6 F1, F2, F3 from 
  (
  (select first 2
    order by ... desc)
  union all
  (select first 4
    order by ... desc)
  union all
  (select first 6
    order by ... desc)
  )



то сервер может встретив
Код: sql
1.
(...)

автоматом добавить
Код: sql
1.
select F1, F2, F3 from 


в ходе препаре

Насколько я понимаю из этих соображений MS SQL Server позволил это делать, а чем мы хуже? Насколько я понимаю как раз появление таких возможностей через некоторое время в стандарт и вписывают.
...
Рейтинг: 0 / 0
Union вопрос к разработчикам
    #38920373
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений БолтикЛично я уже давно перестал, сразу ворчать на клиента, что клиент хочет какую то хрень.
в 1990 году я еще выполнял запросы клиента. Потом стал посылать его нахер, если запросы были идиотичными. Причем с объяснениями, почему они таковыми являются. И клиенты как-то не сопротивлялись.
...
Рейтинг: 0 / 0
Union вопрос к разработчикам
    #38920374
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений Болтикполучаем такое
Использовать EXECUTE BLOCK и ограничивать клиентский fetch мешает что?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Union вопрос к разработчикам
    #38920420
Евгений Болтик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovЕвгений Болтикполучаем такое
Использовать EXECUTE BLOCK и ограничивать клиентский fetch мешает что?


EXECUTE BLOCK использую во всю

мешает
1.Описание полей их тип достает и растягивает процесс писанины. Причет можно обойтись и без "EXECUTE BLOCK"
2.отсутствие
Код: sql
1.
select * from (EXECUTE BLOCK)


3.Зачем изобретать велосипед когда MS уже такое использует. Причем у нас практически мало изменений нужно внести выше я описал об этом.

;)

PS Не понимаю зачем предлагаете варианты для меня, я и так как змей изворачиваюсь еще и баги обхожу, на них с не которого времени забили я так понял. Так записываю в текстовик потом разом вывалю когда тройка выйдет, если проявятся.
...
Рейтинг: 0 / 0
Union вопрос к разработчикам
    #38920577
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений Болтик,

баги по нормальному рассматриваются только те, которые занесены в трекер и корректно оформлены (и предварительно проверены на уже существующие баг-репорты, чтобы не было дублей). В редких и исключительных случаях баг, сообщенный здесь, исправляется. Но в результате "следов" об этом баге и факте исправления (и в каких версиях) не остается. можешь копить баги у себя - они никогда не будут исправлены.
...
Рейтинг: 0 / 0
Union вопрос к разработчикам
    #38920578
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений Болтик> кол-во контекстов иногда зашкаливает

Они-то тут при чём? Я ждал, что ты отмажешься длиной
запроса - мол, в моей гениальной БД не хватает 64К. :)

> Дополнительные поля в таблицу

Доп.поля нужны были до появления derived tables.
И не в таблицу, а в выборку. Дальнейший полёт
мысли комментировать смысла не вижу, если ты
в таких простых вещах путаешься...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Union вопрос к разработчикам
    #38921164
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин, как вы вообще понимаете, что он хотел этой странной конструкцией получить?
У меня только глаз задёргался, но понимания не случилось.
...
Рейтинг: 0 / 0
Union вопрос к разработчикам
    #38921171
Евгений Болтик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамЕвгений Болтик> кол-во контекстов иногда зашкаливает

Они-то тут при чём? Я ждал, что ты отмажешься длиной
запроса - мол, в моей гениальной БД не хватает 64К. :)

> Дополнительные поля в таблицу

Доп.поля нужны были до появления derived tables.
И не в таблицу, а в выборку. Дальнейший полёт
мысли комментировать смысла не вижу, если ты
в таких простых вещах путаешься...


Как не странно контексты мешают выйти за этот предел. Но проблема еще глубже 32К символов ограничение т.к. приходится работать с UTF8.

"путаешься..." вот тут тебя не понял. Я не говорил, что путаюсь. Некоторые вещи пишутся так потому, что надо так. Если бы было написано по другому, то я бы с легкостью не прикрутил к сайту работу с базой.

PS Вообще я факт работы описал у других, а у нас этого нет. И еще относитесь к собеседникам с уважением, не надо недооценивать их знания. Иногда приходится переспросить, чтобы убедится, а не ошибался ли я. К примеру в одной теме почитал одно, подумалось про другое, а оказалось все по старому и у другого еще и вроде как ошибка в коде.
...
Рейтинг: 0 / 0
Union вопрос к разработчикам
    #38921183
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSery> Блин, как вы вообще понимаете, что он хотел этой странной конструкцией получить?

Ты про которую? Исходная, "со скобочками", простая как 5 копеек,
там глазу дергаться нечего. :) Де-факто это нынешний вариант с
derived tables, но без внешнего "select * from", о чём я и сказал выше.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Union вопрос к разработчикам
    #38921196
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений Болтик> Как не странно контексты мешают выйти за этот предел.

Я к тому, что сюда ты их приплёл совершенно зря.
Даже если считать, что избавление от derived tables
позволит сэкономить парочку контекстов, то в общей
массе это такие слёзы, что даже обсуждать смысла нет.

> "путаешься..." вот тут тебя не понял. Я не говорил, что путаюсь

Это я говорил, что ты путаешься. В старых версиях,
когда нужно было такое, добавляли просто фиктивное
поле в выборку (первым, обычно) и сортировали
сначала по нему, а потом по остальному - так наборы
данных не смешивались между собой (но это если
сортировка была неразнонаправленной или это было
некритично - иначе приходилось изгаляться через ХП
или ещё что-то придумывать), а ты в ответ начал про
доп.поля в таблицы и триггера рассказывать... :)

Про уважение и пр. - это ты зря, я художника обидеть
не пытаюсь, просто объясняю своё видение твоей
"проблемы" и её решение при текущем положении дел.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Union вопрос к разработчикам
    #38921214
Евгений Болтик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамЕвгений Болтик>
"путаешься..." вот тут тебя не понял. Я не говорил, что путаюсь

Это я говорил, что ты путаешься. В старых версиях,
когда нужно было такое, добавляли просто фиктивное
поле в выборку


Во художник написал "Дополнительные поля в таблицу и триггеры один за другим по определенной логике работы...", а ты вырвал слово "поле" из контекста и прикрутил его не туда. И сказал, что художник не может добавить доп.поле виртуальное для выборки. Да художник без таких дополнительных полей не художник, если запрос простой как барабан и надо отсортировать по хитрому. Есть такие конструкции построенные, что потом через месяц минут 30 врубаешься, что там и как. Самое интересное, что иногда первый раз написанное работает правильней чем "да нафига я так тогда сделал, ща по новому вот так сделаю". Самое главное, что мы понимаем основной смысл, что хочется остальное фигня и зависит от разработчиков.
...
Рейтинг: 0 / 0
Union вопрос к разработчикам
    #38921236
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений Болтик> а ты вырвал слово "поле" из контекста и прикрутил его не туда

Всё, Евгений Батькович, учитывая хронологию сообщений и
цитат, далее дискутировать с Вами категорически отказываюсь,
дабы ещё чего похуже не выяснилось...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Union вопрос к разработчикам
    #38921362
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамТы про которую?
О той, где то ли первые 3 из первых 3 + 3 + 3, то ли первые 6 из первых 2 + 4 + 6.
...
Рейтинг: 0 / 0
Union вопрос к разработчикам
    #38921372
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSery> О той, где то ли первые 3 из первых 3 + 3 + 3, то ли первые 6 из первых 2 + 4 + 6.

А, это... Эту я особенно не рассматривал и не комментировал,
поскольку она, во-первых, к сабжу никаким боком, а во-вторых,
сама по себе глуповатая (о чём ему Димы и сказали, вроде), но
объяснять это бессмысленно, потому что мопед не его, а клиента.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
43 сообщений из 43, показаны все 2 страниц
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Union вопрос к разработчикам
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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