|
|
|
Max БД
|
|||
|---|---|---|---|
|
#18+
Вопрос в следуещем: Как можно найти 3 самых больших числа в столбце и закинуть их в массив? Можно это сделать без SQL запросов? И как с SQL? Заранее спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2005, 22:33:01 |
|
||
|
Max БД
|
|||
|---|---|---|---|
|
#18+
Проще всего - открыть рекордсет в SQL которого стоит ORDER BY ... DESC ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2005, 23:36:46 |
|
||
|
Max БД
|
|||
|---|---|---|---|
|
#18+
SELECT TOP 3 my_field FROM my_table ORDER BY my_field ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2005, 00:46:18 |
|
||
|
Max БД
|
|||
|---|---|---|---|
|
#18+
LepsikSELECT TOP 3 my_field FROM my_table ORDER BY my_field DESC ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2005, 05:38:39 |
|
||
|
Max БД
|
|||
|---|---|---|---|
|
#18+
А без помощи SQL как вывести? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2005, 16:04:02 |
|
||
|
Max БД
|
|||
|---|---|---|---|
|
#18+
Чтобы вручную сделать это, надо переписать SELECT TOP 3 my_field FROM my_table ORDER BY my_field DESC на бейсике -- Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2005, 16:47:47 |
|
||
|
Max БД
|
|||
|---|---|---|---|
|
#18+
Green2, посмотри сообщение выше... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2005, 17:50:10 |
|
||
|
Max БД
|
|||
|---|---|---|---|
|
#18+
Если числа в поле не сортированы, то проще сначала закинуть все в массив, отсортировать и взять первые 3 :). Для сортировки рекомендую использовать алгоритм Quick Sort, хотя более точно можно подобрать только зная специфику предполагаемог онабора данных. Если же охота поизвращатся и провернуть это все прямо в рекорсете то можно че нить придумать... Например так: Написать небольшую функцию, вызывать ее рекурсивно накладывая фильтр на поле и проверяя количество значений пока оно не будет равно 3. Значение фильтра подбирать в зависимости от предыдущего результата динамически. Т.е. взяли 10 - получили 120 чисел, 20 - 60 чисел, 30 - 10 чисел, 40 - 0 чисел, 35 - 5 чисел, 34 - 3 числа. Расчет окончен :). Magnus ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2005, 07:54:10 |
|
||
|
Max БД
|
|||
|---|---|---|---|
|
#18+
Вы не уточнили откуда столбец. Если из рекордсета, то: Код: plaintext 1. 2. 3. 4. Например, внутри Access, ADO рекордсеты не сортируются и тогда не знаю как - ч/з массив наверно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2005, 12:38:53 |
|
||
|
Max БД
|
|||
|---|---|---|---|
|
#18+
Magnus23, числа в БД не отсортированы, но я их сортирую при загрузке формы: Data1.RecordSource = "SELECT * FROM Данные ORDER BY [Группа] ASC" воть, тут то мне и надо определить наибольшее число в СТОЛБЦЕ, потом найти 2 MAX число и 3... Впринципе можно их закинуть в переменную например MaxChislo(2), так даже будет лучше... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2005, 15:28:45 |
|
||
|
Max БД
|
|||
|---|---|---|---|
|
#18+
Может вы не поняли. если Data1 - это Adodc то: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2005, 15:50:30 |
|
||
|
Max БД
|
|||
|---|---|---|---|
|
#18+
BossXPMagnus23, числа в БД не отсортированы, но я их сортирую при загрузке формы: Data1.RecordSource = "SELECT * FROM Данные ORDER BY [Группа] ASC" воть, тут то мне и надо определить наибольшее число в СТОЛБЦЕ, потом найти 2 MAX число и 3... Впринципе можно их закинуть в переменную например MaxChislo(2), так даже будет лучше... В таком случае чем тебе не подходит первый вариант? Возьми 3 числа снизу, они и будут самыми большими. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2005, 15:58:19 |
|
||
|
Max БД
|
|||
|---|---|---|---|
|
#18+
Magnus23, как можно взять последние 3 числа в столбце и их значения поместить в переменные? А при загрузки этого запроса: Data1.RecordSource = "SELECT TOP 3 Кол-во ст гр прин уч во внеуч деятельности FROM Данные ORDER BY Кол-во ст гр прин уч во внеуч деятельности DESC " выводиться синтаксическая ошибка "3075" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2005, 18:02:23 |
|
||
|
Max БД
|
|||
|---|---|---|---|
|
#18+
BossXPА при загрузки этого запроса: Data1.RecordSource = "SELECT TOP 3 Кол-во ст гр прин уч во внеуч деятельности FROM Данные ORDER BY Кол-во ст гр прин уч во внеуч деятельности DESC " выводиться синтаксическая ошибка "3075"Попробуйте Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2005, 21:06:32 |
|
||
|
Max БД
|
|||
|---|---|---|---|
|
#18+
BossXPMagnus23, как можно взять последние 3 числа в столбце и их значения поместить в переменные? А при загрузки этого запроса: Data1.RecordSource = "SELECT TOP 3 Кол-во ст гр прин уч во внеуч деятельности FROM Данные ORDER BY Кол-во ст гр прин уч во внеуч деятельности DESC " выводиться синтаксическая ошибка "3075" Ох... Var1 = rs!MyField rs.MoveNext Var2 = rs!MyField rs.MoveNext Var3 = rs!MyField ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2005, 23:55:24 |
|
||
|
Max БД
|
|||
|---|---|---|---|
|
#18+
Если сортировака в порядке возрастания, то надо сначало перейти в конец рекордсета rs.MoveLast var1 = rs!MyField rs.MovePrevious var2 = rs!MyField rs.MovePrevious var3 = rs!MyField rs.MovePrevious и желательно всетаки проверять на то, что данные есть, а то будут ошибки валится ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2005, 09:44:40 |
|
||
|
|

start [/forum/topic.php?fid=60&msg=32858089&tid=2168357]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
40ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 243ms |
| total: | 352ms |

| 0 / 0 |
