|
Написать свою функцию сортировки таблицы
|
|||
---|---|---|---|
#18+
Дали задание написать функцию сортировки,где 1 параметр это имя столбца таблицы по которому надо сортировать Написал первое что пришло в голову. Код: 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. 25. 26. 27. 28. 29.
Но оно все же не сортирует,выдает обычный набор строк из таблицы как будто order by ord и нет ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2021, 18:08 |
|
Написать свою функцию сортировки таблицы
|
|||
---|---|---|---|
#18+
Сортировка по константе именно так и должна работать. Поменяй IF на CASE/DECODE и помести его прямо в ORDER BY. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2021, 18:19 |
|
Написать свою функцию сортировки таблицы
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov,как это прямо в ORDER BY? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2021, 18:36 |
|
Написать свою функцию сортировки таблицы
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Жесть,никогда бы и не подумал что так можно делать,спасибо большое ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2021, 18:44 |
|
Написать свою функцию сортировки таблицы
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Поменяй IF на CASE/DECODE и помести его прямо в ORDER BY. Не совсем: Код: plsql 1.
Посему 1, 2, 3, 4 в CASE будут восприняты литерально а не как позиции: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
Надеюсь ты имел ввиду: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
при условии поле cust_num в таблице customers первое, company второе, cust_rep третье, credit_limit четвертое и то при условии все 4 одного типа. А в общем случае: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2021, 20:14 |
|
Написать свою функцию сортировки таблицы
|
|||
---|---|---|---|
#18+
В реальной программе Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
скорее всего, будет лучше. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2021, 21:38 |
|
Написать свою функцию сортировки таблицы
|
|||
---|---|---|---|
#18+
Victor Metelitsa В реальной программе Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
скорее всего, будет лучше. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2021, 21:58 |
|
Написать свою функцию сортировки таблицы
|
|||
---|---|---|---|
#18+
Asmodeus Поддержу. По крайней мере, это будут разные запросы, которые можно будет настраивать по разному. В отличие от случая одного "универсального" запроса, в котором "хвост вытащишь - нос увязнет". Тут скорее вопрос производительности и ресурсов. CASE не позволит использовать индекс вместо сортировки и например рискует получить disk sort на больших объемах хотя возможен и обратный вариант - INDEX FULL SCAN + TABLE ACCESS BY ROWID (даже batched) может быть медленней TABLE ACCESS FULL + SORT ORDER BY. А применительно к коду OP: Код: plsql 1.
при условии поле cust_num в таблице customers первое, company второе, cust_rep третье, credit_limit четвертое конечно. SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2021, 15:42 |
|
Написать свою функцию сортировки таблицы
|
|||
---|---|---|---|
#18+
Asmodeus Поддержу. По крайней мере, тут важнее Код: plsql 1.
...... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2021, 12:00 |
|
Написать свою функцию сортировки таблицы
|
|||
---|---|---|---|
#18+
SY при условии поле cust_num в таблице customers первое, company второе, cust_rep третье, credit_limit четвертое конечно. SY. не могу понять ето условие/ограничение, о чем ето? ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2021, 12:02 |
|
Написать свою функцию сортировки таблицы
|
|||
---|---|---|---|
#18+
Stax SY при условии поле cust_num в таблице customers первое, company второе, cust_rep третье, credit_limit четвертое конечно. SY. не могу понять ето условие/ограничение, о чем ето? ..... stax Посмотри на исходное сообщение. ТС хотел (причем неправильно ибо order by ord будет сортировать по Expression а не по ColumnPosition) сортировку по первому полю таблицы если wichSort = 'cust_num', по второму полю таблицы если wichSort = 'company', и.т.д. Мы не знаем порядок полей в таблице customers поэтому и говорим что select * from customers order by 1 и select * from customers order by cust_num эквивалентны только при условии поле cust_num в таблице customers первое. SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2021, 15:19 |
|
Написать свою функцию сортировки таблицы
|
|||
---|---|---|---|
#18+
SY Посмотри на исходное сообщение. ТС хотел (причем неправильно ибо order by ord будет сортировать по Expression а не по ColumnPosition) сортировку по первому полю таблицы если wichSort = 'cust_num', по второму полю таблицы если wichSort = 'company', и.т.д. Мы не знаем порядок полей в таблице customers поэтому и говорим что select * from customers order by 1 и select * from customers order by cust_num эквивалентны только при условии поле cust_num в таблице customers первое. SY. по любому order by ord не будет сортировать, даже если "поле cust_num в таблице customers первое" зы я уверен что Вы ето занаете, обычно на англиском могу не так понять, а тут на русском и я запутался в формулировке ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2021, 15:33 |
|
|
start [/forum/topic.php?fid=52&msg=40123162&tid=1879642]: |
0ms |
get settings: |
16ms |
get forum list: |
6ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
24ms |
get topic data: |
3ms |
get forum data: |
1ms |
get page messages: |
326ms |
get tp. blocked users: |
1ms |
others: | 300ms |
total: | 679ms |
0 / 0 |