Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / TOP 10 / 16 сообщений из 16, страница 1 из 1
24.03.2004, 17:08
    #32455401
Евгений.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TOP 10
Друзья, сегодня я видел чудо!
Вот как дело было:

Выбираю из таблицы 3 поля: код товара, дату продажи и цену.
Запрос дает всю историю.

Добавляю TOP 10 (без %).
Получаю 10 записей.

Добавляю сортировку по убыванию дат - 12 записей.

Меняю сортировку на убывание цен - 11 записей.

Читаю в хелпе: Microsoft Access возвращает указанное число записей, а также все записи, у которых значение в первом поле совпадает со значением этого поля в последней отобранной записи.

Возникает 2 вопроса:
1. Как это обойти? Мне нужно ровно 10 записей, даже если у следующих совпадают значения.

2. Почему без сортировки работает правильно?
...
Рейтинг: 0 / 0
24.03.2004, 17:29
    #32455445
Kelme
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TOP 10
1. SELECT DISTINCT TOP 10 Field FROM Table
...
Рейтинг: 0 / 0
24.03.2004, 17:39
    #32455465
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TOP 10
Добавляю сортировку по убыванию дат - 12 записей.

потому что у 3 последних дат - одно значение откуда ему знать какую из записей оставить а какую отбросить

поставь вторым критерием сортировки поле счетчика
...
Рейтинг: 0 / 0
24.03.2004, 18:57
    #32455637
Евгений.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TOP 10
Нет, DISTINCT тут не подходит, он испортит картину.
Мне нужно получить среднюю цену последних 10 операций.
А если взять DISTINCT, он даст 10 не последних, а 10 _разных_ последних, а счетчика в таблице нет, поэтому это не то.
...
Рейтинг: 0 / 0
24.03.2004, 19:51
    #32455711
Евгений.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TOP 10
АлексейК потому что у 3 последних дат - одно значение откуда ему знать какую из записей оставить а какую отбросить

поставь вторым критерием сортировки поле счетчика

пусть возьмет любую, мне все равно =) лишь бы не больше 10!
счетчика нет, а второй сортировкой стоит убывание цены.

Но она тоже как назло одинаковая на этих 3 последних записях =((
...
Рейтинг: 0 / 0
24.03.2004, 22:35
    #32455838
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TOP 10
Можно добавить в запрос вычисляемое поле вида rnd(a), где a - одно из других полей.
...
Рейтинг: 0 / 0
25.03.2004, 10:32
    #32456199
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TOP 10
rnd тоже лажа в отличие от бейсика для дос

может я чего не так понимаю но дает она 4 значения по очереди

лучше написать свою функцию - нумератор
...
Рейтинг: 0 / 0
25.03.2004, 11:14
    #32456333
Евгений.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TOP 10
Ну что за лажа?! Неужели нет встроенного средства?
Создатели аксеса так и планировали, если нет ключа в наборе данных то пусть каждый юзер напишет себе по функции-нумератору??

И как обычно в хелпе об этом ничего =((
...
Рейтинг: 0 / 0
25.03.2004, 11:29
    #32456384
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TOP 10
нефиг одно и то же обсуждать по кругу \r
тынц\r
\r
и не фиг говорить что этого нет в хелпе.
...
Рейтинг: 0 / 0
25.03.2004, 12:13
    #32456538
TOP 10
авторrnd тоже лажа в отличие от бейсика для дос

может я чего не так понимаю но дает она 4 значения по очереди

Именно что "не так". (видимо передавались отрицательные аргументы, или, иногда,0. Т.е. время от времени последовательность перезапускалась)

авторМожно добавить в запрос вычисляемое поле вида rnd(a), где a - одно из других полей
Неправда ваша. Надо еще и следить чтобы аргумент rnd() был больше 0 (или отсутсвтовал). НАпример rnd(1+[a] - [a])
...
Рейтинг: 0 / 0
25.03.2004, 12:18
    #32456555
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TOP 10
а не проще ли


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
public NN as long


public function Numbering (anyfield )
on error resume next
NN = NN +  1 
if err.number <>  0  then NN =  0 
 Numbering = NN
end function


функция будет давать нумерацию по кругу, но для top сгодится
...
Рейтинг: 0 / 0
25.03.2004, 17:17
    #32457389
Евгений.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TOP 10
Да Лошара, ты прав, я нашел этот текст в хепле.

Со вторым вопросом мне уже понятно.
Давайте определимся с первым:

АлексейК предлагает добавить в сортировку ключевое поле, а если нет ключа то писать функцию нумерации.

Я нашел еще один вариант - в первом запросе просто сортируем по дате, второй берет из первого ТОП 10 _не сортируя_.

Какие еще будут мысли?

ЗЫ: А насчет "одно и то же обсуждать по кругу", дык напрягись и сотвори из топика фак, это ж легче чем из воды вино?
...
Рейтинг: 0 / 0
25.03.2004, 17:21
    #32457396
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TOP 10
тебе уже сочинили фак - называется хелп
но ты же его не читаешь
...
Рейтинг: 0 / 0
25.03.2004, 17:23
    #32457404
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TOP 10
))
...
Рейтинг: 0 / 0
25.03.2004, 17:46
    #32457465
Geo
Geo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TOP 10
Нда...
...
Рейтинг: 0 / 0
25.03.2004, 19:24
    #32457635
Евгений.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TOP 10
авторно ты же его не читаешь
Да ладно, не обижайся! ;-)

Или ты в душе факоборец? тогда почему не сотрешь те статьи, которые уже попали в раздел фак сайта? =))

Насчет встроенного хелпа ни разу не слышал, что он полон или удобен, а вот что статьи плохо связаны друг с другом много раз слышал, и что информация не полная (тот же vbMonday), и что находится не в том месте где должна (правила округления Int\CInt) тоже. Поэтому не путай его с факом.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / TOP 10 / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]