|
Направление сортировки
|
|||
---|---|---|---|
#18+
Можно как-то сделать направление сортировки в зависимости от параметра? Попробовал так - Код: sql 1.
Не проканало. Всех с пятницей! ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2019, 14:17 |
|
Направление сортировки
|
|||
---|---|---|---|
#18+
На клиенте это будет удобнее. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2019, 14:19 |
|
Направление сортировки
|
|||
---|---|---|---|
#18+
Да на клиенте легко. Подумал, мож есть какая фича(костыль), о которых не знаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2019, 14:21 |
|
Направление сортировки
|
|||
---|---|---|---|
#18+
Exteris, Код: plsql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2019, 14:26 |
|
Направление сортировки
|
|||
---|---|---|---|
#18+
О, вот и костыль, спасибо.)) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2019, 14:44 |
|
Направление сортировки
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2019, 15:06 |
|
Направление сортировки
|
|||
---|---|---|---|
#18+
Exteris, Код: sql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2019, 15:22 |
|
Направление сортировки
|
|||
---|---|---|---|
#18+
Exteris, домножай значение, приведённое к числу, на плюс единицу или минус единицу (параметр) и сортируй по результату :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2019, 17:32 |
|
Направление сортировки
|
|||
---|---|---|---|
#18+
кстати, хорошо бы оптимизатор умел применять индексы по выражениям для order by column * :Param - ибо параметр тут для запроса константа ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2019, 17:35 |
|
Направление сортировки
|
|||
---|---|---|---|
#18+
Arioch, я уже лет двадцать точно вижу обсуждения типа "а почему бы не сделать в SQL что-то вроде select :param1 from :param2 where :param3 order by :param4 :param5 ?" А в :param писать списки, и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2019, 19:01 |
|
Направление сортировки
|
|||
---|---|---|---|
#18+
ExterisО, вот и костыль, спасибо.))Там обрыв. Не, оно вестимо сработает, только будет доп коннект самого на себя, пойдут лесом депенденсы. Короче для сворачивания шеи вполне достаточно, идти туда можно если ну ОЧЕНЬ хочется. Помножить на "-1 " зело проще. Когда встречаю подобный фарш у себя устраиваю разбор полетов с переписыванием. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2019, 11:11 |
|
Направление сортировки
|
|||
---|---|---|---|
#18+
kdv, ну причёт тут списки? функции y=x и y=-x - две очень узко определённых случая, которые к спискам никак не относятся. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2019, 13:49 |
|
Направление сортировки
|
|||
---|---|---|---|
#18+
Arioch, продолжаем кормить трекер какой-то хренью (я вообще не понял что там написано) дабы потом снова обиженно заявлять о том, как ленивые разработчики не любят своих пользователей и как они там вообще зазвездились и не бросились делать такую охренительную фичу ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2019, 19:41 |
|
Направление сортировки
|
|||
---|---|---|---|
#18+
Arioch, жалко что в трекере нет опции "развидеть". p.s. ё-моё, ну вы серьезно хотите ASC/DESC через параметр? ядреный стыд... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2019, 00:30 |
|
Направление сортировки
|
|||
---|---|---|---|
#18+
Ivan_PisarevskyExterisО, вот и костыль, спасибо.))Там обрыв. Не, оно вестимо сработает У меня тип поля - дата. Так что вариант Влада подошел. А вообще да, проще на клиенте. Но пока нет возможности его обновить. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2019, 06:59 |
|
Направление сортировки
|
|||
---|---|---|---|
#18+
kdv, чем это по сути отличается от ....WHERE ID = 1 через параметр? а тем более, от ....WHERE ID = 1 OR 1 IS NULL через параметр? кроме того, что одно Firebird уже умеет и все привыкли, а другое - ещё нет и все привыкли ------- hvladя вообще не понял печально полноценную поддержку сортировки по подходящему индексу запросов типа select .... order by ? * (field1+field2), и как частный случай select .... order by ? * field1 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2019, 11:49 |
|
Направление сортировки
|
|||
---|---|---|---|
#18+
Ariochполноценную поддержку сортировки по подходящему индексу запросов типа select .... order by ? * (field1+field2), и как частный случай select .... order by ? * field1 * - это что? что такое order by ? (field1+field2) ? что значит "полноценная поддержка сортировки"? order by не использует "подходящие индексы"? Что тогда такое "подходящие индексы"? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2019, 13:41 |
|
Направление сортировки
|
|||
---|---|---|---|
#18+
это умножение, такая операция арифметическая order by - это указание отсортировать результат выборки в стандарте SQL (field1+field2) - это пример арифметического выражения, использующего поля таблицы ("field" по-английски "поле"). Причём, одной и той же таблицы оба поля, потому что не указаны ни алиасы таблиц ни их названия. > order by не использует "подходящие индексы"? когда как select * from t2 order by id PLAN (T2 ORDER PK_T2) select * from t2 order by id desc PLAN SORT ((T2 NATURAL)) select * from t2 order by cast (:direction as integer) * id -- параметр равен +1 PLAN SORT ((T2 NATURAL)) -- а лучше бы было PLAN (T2 ORDER PK_T2) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2019, 13:48 |
|
Направление сортировки
|
|||
---|---|---|---|
#18+
Кстати, ещё забавное в 2.5 (вероятно и 3, не пробовал) и IBE select * from t2 order by id * :x Data type unknown. интересно, почему unknown, если id integer? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2019, 13:52 |
|
Направление сортировки
|
|||
---|---|---|---|
#18+
Arioch, ну вот опять ты несешь чушь. 1. В Firebird индексы однонаправленные. Что ты хотел показать своим order by id desc? Непонимание методов доступа? Уж лучше пожелать двунаправленных индексов. Да это не так просто сделать, но наверное возможно и пользы будет больше. 2. order by cast (:direction as integer) * id ещё одна билиберда. Ещё раз почитай статью про методы доступа и как работает навигация по индексу. Что будет если в direction передать число такое что результат вылезет за диапазон id? В индексе этих данных нет. Как оно должно по индексу бежать? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2019, 13:56 |
|
Направление сортировки
|
|||
---|---|---|---|
#18+
Ariochинтересно, почему unknown, если id integer? да неужели? А double не может быть? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2019, 13:59 |
|
Направление сортировки
|
|||
---|---|---|---|
#18+
Симонов Денис, я знаю, и в тикете про однонаправленность написано. Показать я хотел - разное поведение, именно что индекс иногда применим, а иногда нет. более того, я знаю, и что планы в текущей реализации строятся при prepare, когда значений параметров ещё нет, и что вариантных планов в FB нету. Именно поэтому тикет оформлен как improvement, а не bug прочитай наконец тикет, он гораздо короче "методов доступа". Речь идёт про четкий случай, где id = +1 либо -1 либо 0 впрочем, твой случай "если в direction передать число такое что результат вылезет за диапазон" implementaiton details вполне можно свести к той же тройке вариантов - брать signum(direction): исходно SQL - математическая абстракция, и конечного диапазона у чисел нет. А реализации SQL должны стараться выдать математически-коррeктный результат и свободны в выборе внутренней реализации. Соотвественно, переполнение при умножении тут не имеет значения, потому что результат клиенту не отдается, он только внутренне используется для сортировки. результат сортировок order by +0.0001 * id и order by +1 * id и order by +1000 * if совпадает, поскольку зависит только от знака и оптимизатор, поэтому, сохраняя математически корректный результат сортировки, имеет право эти выражения менять одно на другое и да, для любителей "заставить сортировать после натурала, несмотря на существующий индекс" останется order by id+0 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2019, 14:08 |
|
Направление сортировки
|
|||
---|---|---|---|
#18+
Симонов ДенисAriochинтересно, почему unknown, если id integer? да неужели? А double не может быть? а он в обоих случаях может, и в случае явного CAST тоже, почему бы нет? впрочем, это уже будет третья ветка разговора, ну её к лешему ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2019, 14:11 |
|
|
start [/forum/topic.php?fid=40&fpage=20&tid=1560600]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
44ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
others: | 315ms |
total: | 458ms |
0 / 0 |