|
|
|
Сортировка по двум столб как по одному.
|
|||
|---|---|---|---|
|
#18+
Тут попросили меня навести небольший глянец, вот хочу попспрашивать совета: Исходные: таблица, полученная с помощью внешнего объединения имеет два одинаковых столбца (на самом деле больше, но это не суть), типа таких: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Пока отображается как вверху. Т.е. сначала идут записи по порядку с пустыми в поле bal1, потом совпавшие/объединенные, а потом соотв. с пустыми в поле bal2 А просят сделать так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Т.е. чтобы сортировка была как бы сразу по двум столбцам. Возможно ли так сделать??? Пока мне в голову приходит, только добавления в таблицу еще одного поля, которое должно хитрым образом заполняться, а по нему потом соответственно и сортироваться( - надо еще подумать как лучше это сделать) Может есть еще другой вариант? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2003, 12:34 |
|
||
|
Сортировка по двум столб как по одному.
|
|||
|---|---|---|---|
|
#18+
Третье поле можно прямо в запрос добавить типа iif(isnull[bal1]);[bal2];[bal1]) и по нему сортировать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2003, 12:42 |
|
||
|
Сортировка по двум столб как по одному.
|
|||
|---|---|---|---|
|
#18+
Sort By Nz(bal1,bal2) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2003, 12:42 |
|
||
|
Сортировка по двум столб как по одному.
|
|||
|---|---|---|---|
|
#18+
тьфу блин обед на меня плохо повлиял Order By канешна ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2003, 12:43 |
|
||
|
Сортировка по двум столб как по одному.
|
|||
|---|---|---|---|
|
#18+
Спасибо за ответы... Все заработало через - ORDER BY Nz(bal1,bal2). 2Лох Позорный: на счет Nz, вместо IIf - "Остро, позарубежному" //(Две башни снесло) сам я до того не додумался бы, тоже через IIf полез бы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2003, 14:23 |
|
||
|
Сортировка по двум столб как по одному.
|
|||
|---|---|---|---|
|
#18+
Не всегда то, что короче лучше :) Nz, по-моему, будет медленнее работать, чем iif. В моих тестах на 30-40%. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2003, 15:06 |
|
||
|
Сортировка по двум столб как по одному.
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. В зависимости от того, какую из четырех строчек раскоментарить - получаем 0.5195313 0.421875 0.671875 0.6601563 Аксес 97-й ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2003, 15:24 |
|
||
|
Сортировка по двум столб как по одному.
|
|||
|---|---|---|---|
|
#18+
Совершенно неправильно сравнивать скорость функции iif в запросе и в VBA. Чтобы не быть голословным, привлеку на помощь Гетца: >>>>>>>>>>>> В запросах, формах и отчетах функция IIf работает не так, как в VBA, - она является полным аналогом оператора If...Then...Else. <<<<<<<<<<<< Еще раз проверил (на другом компе) скорость выполнения запроса из 10000 записей с nz и iif и снова убедился, что iif быстрее. Извините... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2003, 19:49 |
|
||
|
Сортировка по двум столб как по одному.
|
|||
|---|---|---|---|
|
#18+
Да ладно, не извиняйся... :-) Действительно, проверил на тестовых таблицах из 300 записей: 1. Nz(bal1, bal2) - 122 2. IIf(bal1>0, bal1, bal2) - 94 через IIf получается быстрее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2003, 11:12 |
|
||
|
Сортировка по двум столб как по одному.
|
|||
|---|---|---|---|
|
#18+
> 2. IIf(bal1>0, bal1, bal2) - 94 > через IIf получается быстрее А если IIf(IsNull(bal2), bal1, bal2)? Так сравнивать вроде корректнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2003, 12:25 |
|
||
|
Сортировка по двум столб как по одному.
|
|||
|---|---|---|---|
|
#18+
>А если IIf(IsNull(bal2), bal1, bal2)? Так сравнивать вроде корректнее. Я это и использовал ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2003, 12:34 |
|
||
|
Сортировка по двум столб как по одному.
|
|||
|---|---|---|---|
|
#18+
А что такое IIf(bal1>0, bal1, bal2)? Это опечатка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2003, 12:38 |
|
||
|
Сортировка по двум столб как по одному.
|
|||
|---|---|---|---|
|
#18+
с IzNull у меня почему то не пошел, и я запустил так... ща еще покавыряюсь, запрос просто большой, лопатишь его лопатишь, мож где что и упустил ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2003, 13:00 |
|
||
|
Сортировка по двум столб как по одному.
|
|||
|---|---|---|---|
|
#18+
Просто я предполагаю, что IIf и Nz работают с одинаковой скоростью, если IIf работает с IsNull. А разница - между IsNull и >. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2003, 13:02 |
|
||
|
Сортировка по двум столб как по одному.
|
|||
|---|---|---|---|
|
#18+
То Владимир Саныч: Проверьте сами..., мне интересно, какой у вас будет результат ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2003, 13:17 |
|
||
|
Сортировка по двум столб как по одному.
|
|||
|---|---|---|---|
|
#18+
1. Я не Вы, я ты. :^) 2. OK, проверю на досуге. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2003, 13:19 |
|
||
|
Сортировка по двум столб как по одному.
|
|||
|---|---|---|---|
|
#18+
Итак, вот результаты. В секундах на 1000-кратное открывание рекордсета. order by true -> 4.4 order by nz(n1,n2) -> 14.2 order by iif(isnull(n1),n2,n1) -> 8.7 order by iif(n1>0,n1,n2) -> 6.4 nz действительно медленнее всех. Однако последний вариант некорректен, т.к. он не работает при отрицательных значениях полей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2003, 13:54 |
|
||
|
|

start [/forum/topic.php?fid=45&fpage=1740&tid=1679000]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
30ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 200ms |
| total: | 325ms |

| 0 / 0 |
