|
Порядок сортировки значений в функции LIST
|
|||
---|---|---|---|
#18+
Можно ли повлиять на порядок сортировки элементов, возвращаемых функцией LIST()? В документе "Firebird_2_5_Language_Reference_RUS.pdf" сказано: Порядок конкатенации строк определяется порядком чтения записей из источников, который в общем случае не определён. Для придания списку необходимого порядка вы можете предварительно упорядочить источник данных, например, с помощью производной таблицы. А вот http://firebirdsql.su/doku.php?id=list&s%5B]=list]тут сказано: Порядок элементов в списке определен реализацией, т.е. ORDER BY не влияет на результат. Проверяю на версии 2.5.8 и склоняюсь к тому, что ORDER BY ни на что не влияет: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
Во внешнем запросе не учитывается ORDER BY, указанный во внутреннем запросе. Мне на самом деле интересно знать следующее: гарантируется ли, что функция LIST сортирует данные в порядке возрастания? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2019, 09:15 |
|
Порядок сортировки значений в функции LIST
|
|||
---|---|---|---|
#18+
DmSer, у меня всё верно написано. Ты не учитываешь, что GROUP BY тоже выполняется с помощью сортировки и может поломать порядок который возвращён из производной таблицы ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2019, 09:26 |
|
Порядок сортировки значений в функции LIST
|
|||
---|---|---|---|
#18+
И как же мне без GROUP BY запрос выполнить (чтоб не портился порядок сортировки)? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2019, 09:44 |
|
Порядок сортировки значений в функции LIST
|
|||
---|---|---|---|
#18+
DmSer, Если GSM_ID уникальны в группе, то тебе поможет DISTINCT, наверное. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2019, 10:05 |
|
Порядок сортировки значений в функции LIST
|
|||
---|---|---|---|
#18+
DmSerИ как же мне без GROUP BY запрос выполнить (чтоб не портился порядок сортировки)? Хранимка, execute block... В общем, ручная конкатенация. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2019, 11:19 |
|
Порядок сортировки значений в функции LIST
|
|||
---|---|---|---|
#18+
DmSer, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2019, 17:22 |
|
Порядок сортировки значений в функции LIST
|
|||
---|---|---|---|
#18+
H.e.l.p, Что это за хрень? Не поможет. Когда я писал "попробуй дистинкт", я имел в виду LIST(DISTINCT Q.GSM_ID, ','), а не это. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2019, 17:33 |
|
Порядок сортировки значений в функции LIST
|
|||
---|---|---|---|
#18+
WildSery, при чем тут то что ты писал? Пусть ТС проверит, поможет или нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2019, 17:36 |
|
Порядок сортировки значений в функции LIST
|
|||
---|---|---|---|
#18+
я и не заметил, что у ТС, похоже и так хранимка. Почему не воспользоваться for select...? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2019, 17:36 |
|
Порядок сортировки значений в функции LIST
|
|||
---|---|---|---|
#18+
H.e.l.pWildSery, при чем тут то что ты писал? Пусть ТС проверит, поможет или нет.Заменить клавиатуру на жёлтую автору не хочешь предложить? Пусть тоже проверит, поможет или нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2019, 18:23 |
|
Порядок сортировки значений в функции LIST
|
|||
---|---|---|---|
#18+
WildSery, ты хочешь сказать запрос не рабочий и вернет результат не так как хотел его видеть ТС? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2019, 08:57 |
|
Порядок сортировки значений в функции LIST
|
|||
---|---|---|---|
#18+
H.e.l.pDmSer, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Так работает! ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2019, 12:41 |
|
Порядок сортировки значений в функции LIST
|
|||
---|---|---|---|
#18+
DmSer, Спасибо! А то некоторые слишком категоричны, в своих высказываниях... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2019, 14:28 |
|
Порядок сортировки значений в функции LIST
|
|||
---|---|---|---|
#18+
H.e.l.pWildSery, ты хочешь сказать запрос не рабочий и вернет результат не так как хотел его видеть ТС?Нет, я такого не говорил. Запрос рабочий, только неэффективный, кореллирующий подзапрос может и ласты склеить на объёмах. И кстати, зачем у тебя distinct? Это делает запрос не идентичным запросу автора. Ведь он так и не написал, уникален ли у него GSM_ID в пределах группы. DmSerТак работает!Сегодня работает. С тем же успехом можно было вставить дистинкт в лист и не париться с подзапросами. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2019, 16:54 |
|
Порядок сортировки значений в функции LIST
|
|||
---|---|---|---|
#18+
H.e.l.p, у меня трёшка заругалась на group by. Без group by работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2019, 17:51 |
|
Порядок сортировки значений в функции LIST
|
|||
---|---|---|---|
#18+
По хорошему надо добавить WITHIN GROUP (ORDER BY... https://docs.microsoft.com/en-us/sql/t-sql/functions/string-agg-transact-sql?view=sql-server-2017 может в Firebird 5? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2019, 19:06 |
|
Порядок сортировки значений в функции LIST
|
|||
---|---|---|---|
#18+
sysdba22По хорошему надо добавить WITHIN GROUP (ORDER BY... https://docs.microsoft.com/en-us/sql/t-sql/functions/string-agg-transact-sql?view=sql-server-2017 может в Firebird 5? Хорошо бы Код: sql 1. 2.
где compare_function - функция сравнения, типа такой: Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
:-) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2019, 19:21 |
|
Порядок сортировки значений в функции LIST
|
|||
---|---|---|---|
#18+
Хотелось бы еще раз прояснить работу сабжа. Дано: процедура, в которой указан порядок сортировки, т.е. ordred by. Так вот казалось бы, процедура, являясь источником данных, выдает уже отсортированный список и как указано в доках(Порядок конкатенации строк определяется порядком чтения записей из источников), должно было бы работать, но нет, не работает. Хорошо, делаю конструкцию: Код: sql 1. 2. 3. 4.
тоже не работает... Если же написать конструкцию, типа: Код: sql 1. 2. 3. 4.
то тогда уже все работает. Вопрос, почему не работают два первых варианта? Версия сервера 3.0.8. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2021, 11:18 |
|
Порядок сортировки значений в функции LIST
|
|||
---|---|---|---|
#18+
demon1992, начни с воспроизводимых примеров. "Не работает" - не работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2021, 11:40 |
|
Порядок сортировки значений в функции LIST
|
|||
---|---|---|---|
#18+
demon1992, а ничего что 1 и 2 вариант совсем не эквивалентны? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2021, 12:03 |
|
Порядок сортировки значений в функции LIST
|
|||
---|---|---|---|
#18+
hvlad, distinct внутри list должен как то влиять на сортировку? Похоже дело в нем. Пример сейчас посмотрю. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2021, 12:07 |
|
Порядок сортировки значений в функции LIST
|
|||
---|---|---|---|
#18+
hvlad demon1992, начни с воспроизводимых примеров. "Не работает" - не работает. Работает Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
Не работает Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2021, 12:18 |
|
Порядок сортировки значений в функции LIST
|
|||
---|---|---|---|
#18+
demon1992, distinct выполняет сортировку, так что противоречий с документацией нет. Если хочешь чтобы работало правильно вноси distinct в производную таблицу ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2021, 12:33 |
|
Порядок сортировки значений в функции LIST
|
|||
---|---|---|---|
#18+
Симонов Денис, Не нашел в документации описания, что distinct влияет на сортировку. Во избежании офф топа, больше никаких пояснений мне не требуется, я все понял. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2021, 12:50 |
|
|
start [/forum/topic.php?fid=40&msg=39867466&tid=1559860]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
42ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
74ms |
get tp. blocked users: |
2ms |
others: | 236ms |
total: | 405ms |
0 / 0 |