Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Ошибка при использовании LAST / 21 сообщений из 21, страница 1 из 1
12.02.2004, 14:48
    #32407227
lamefox
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при использовании LAST
Есть таблица
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
idWarehouses	DateIncoming	IncomingWeight	idIncomingGoods
 11 	              11 . 02 . 2004 	 200 	             18 
 11 	              11 . 02 . 2004 	 100 	             19 
 11 	              11 . 02 . 2004 	 99 	             20 
 11 	              11 . 02 . 2004 	 100 	             21 
 11 	              11 . 02 . 2004 	 200 	             22 
 11 	              11 . 02 . 2004 	 225 	             23 
 11 	              11 . 02 . 2004 	 200 	             24 
 19 	              11 . 02 . 2004 	 333 	             25 
 19 	              11 . 02 . 2004 	 33 	             26 
 19 	              11 . 02 . 2004 	 34 	             27 
 11 	              12 . 02 . 2004 	 99 	             28 
 11 	              12 . 02 . 2004 	 99 	             29 
 12 	              12 . 02 . 2004 	 111 	             30 
 12 	              12 . 02 . 2004 	 111 	             31 
 12 	              12 . 02 . 2004 	 111 	             32 
 12 	              12 . 02 . 2004 	 222 	             33 

Ключевое поле: idIncomingGoods
Выполняю запрос:
Код: plaintext
1.
2.
SELECT LAST(idIncomingGoods) AS LastIdIncomingGoods
FROM IncomingGoods

Получаю результат: LastIdIncomingGoods = 29
Должен быть 33
Подскажите плиз почему такое может быть.

Спасибо
...
Рейтинг: 0 / 0
12.02.2004, 14:50
    #32407232
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при использовании LAST
Надо брать не Last, а Max.
...
Рейтинг: 0 / 0
12.02.2004, 14:50
    #32407233
Hummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при использовании LAST
SELECT Max(idIncomingGoods) AS MaxIdIncomingGoods
FROM IncomingGoods
...
Рейтинг: 0 / 0
12.02.2004, 14:50
    #32407235
Hummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при использовании LAST
2 Владимир Саныч
Быстрый олень - король леса:)
...
Рейтинг: 0 / 0
12.02.2004, 14:55
    #32407246
lamefox
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при использовании LAST
А почему LAST то не пашет, зачем он тогда нужен ???
Сорри за тупость конечно :))
...
Рейтинг: 0 / 0
12.02.2004, 15:09
    #32407277
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при использовании LAST
зачем он тогда нужен ???
Ни зачем он не нужен
...
Рейтинг: 0 / 0
12.02.2004, 15:17
    #32407290
Kelme
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при использовании LAST
Если хочешь пользоваться Last, то надо указывать по какому полю сортировать. И хелп переодически читать :)

Код: plaintext
1.
2.
SELECT LAST(idIncomingGoods) AS LastIdIncomingGoods
FROM IncomingGoods
ORDER BY idIncomingGoods
...
Рейтинг: 0 / 0
12.02.2004, 15:36
    #32407315
lamefox
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при использовании LAST
Если хочешь пользоваться Last, то надо указывать по какому полю сортировать. И хелп переодически читать :)
Код: plaintext
1.
2.
SELECT LAST(idIncomingGoods) AS LastIdIncomingGoods
FROM IncomingGoods
ORDER BY idIncomingGoods


Это запрос не пашет :)
...
Рейтинг: 0 / 0
12.02.2004, 15:44
    #32407329
Kelme
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при использовании LAST
какая разница, работает-не работает, в хелпе всё написано :))
...
Рейтинг: 0 / 0
12.02.2004, 15:48
    #32407338
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при использовании LAST
Разумеется не пашет
Если есть Last - должен быть и Group By
И, по логике, Last должен брать последнюю (согласно указанной сортировке) запись внутри группы. Однако это по моей логике, а по аксесовской - никакой сортировки внутри группы задать невозможно. А без сортировки - вообще непонятно в чем отличие первой попавшейся (First) от последней попавшейся (Last) и вообще от любой попавшейся.
Поэтому и не имеет никакого смысла эта агрегатная функция.
...
Рейтинг: 0 / 0
12.02.2004, 15:54
    #32407347
Kelme
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при использовании LAST
Group by не нужен, это выглядит так:

Код: plaintext
1.
2.
3.
4.
SELECT Last([Field]) AS LastField
FROM Fields
ORDER BY Last([Field])

...
Рейтинг: 0 / 0
12.02.2004, 15:56
    #32407353
AlexJuice
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при использовании LAST
Это как - в рекордсете с одной записью сортировка?
...
Рейтинг: 0 / 0
12.02.2004, 15:58
    #32407360
Varan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при использовании LAST
Я недавно по ошибке написал этот Last вместо max чисто по ошибке, из за того, что думал "Надо найти последнюю запись..." Думаю, что манера Microsoft не убирать из своих продуктов кривые функции не очень хороша. Пусть их будет меньше, но они будут нормальные.
...
Рейтинг: 0 / 0
12.02.2004, 16:00
    #32407363
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при использовании LAST
2 Kelme
Окуенная у тебя сортировка
Сначала выбрал Last, потом по нему отсортировал
...
Рейтинг: 0 / 0
12.02.2004, 16:02
    #32407370
Kelme
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при использовании LAST
Ну вот так вот получается.
Да и глючит она в добавок, попытался применить Last к другому полю, выдаёт первое попавшиеся, даже сортировка не помогает :)
...
Рейтинг: 0 / 0
12.02.2004, 16:03
    #32407373
Kelme
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при использовании LAST
Л.П.
Это не я, ето в конструкторе запросов сделано :))
...
Рейтинг: 0 / 0
12.02.2004, 16:08
    #32407385
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при использовании LAST
Да и глючит она в добавок, попытался применить Last к другому полю, выдаёт первое попавшиеся, даже сортировка не помогает :)
Про что я и говорю. Нету сортировки внутри группы, а без нее нету смысла в слове "первый" или "последний"
...
Рейтинг: 0 / 0
12.02.2004, 16:11
    #32407392
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при использовании LAST
Внимание! \r
\r
Насчет First и Last когда-то была длинная дискуссия. Вот она:\r
/topic/45103&pg=-1\r
\r
Вопрос особенно неприятен потому, что там замешана ошибка в хелпе.
...
Рейтинг: 0 / 0
12.02.2004, 16:14
    #32407394
assa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при использовании LAST
Когда-то давно я думал, что можно например так

SELECT Last([t2_Value])
FROM [SELECT t2.t2_Value
FROM t2
GROUP BY t2.t2_Value
ORDER BY t2.t2_Value DESC]. as q;

т.е. сначала отсортировать, а потом взять от него ласт. Ан х. Результат не зависит например от DESC. (и прочих предварительных сортировок исходного рекордсета). Т.е. Last не зависит ни от чего, кроме того, в каком порядке вздумается джету дергать записи.
...
Рейтинг: 0 / 0
12.02.2004, 16:14
    #32407395
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при использовании LAST
Точнее:\r
/topic/45103&pg=-1#309473\r
\r
The Remarks section of the Help File topic, "First, Last Functions" incorrectly states that unless the query includes and ORDER BY clause, the order of records returned will be arbitrary . The correct information is that the order of records returned by the First() and Last() functions is not affected by the ORDER BY clause . \r
\r
The First(), Last(), DFirst(), and DLast() functions ignore sort orders and indexes, and primary keys. These functions are intended to return data from the first or last undeleted record entered into the table , not from the first or last record in a given sort order.
...
Рейтинг: 0 / 0
12.02.2004, 18:24
    #32407670
Alexus12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при использовании LAST
Microsoft Knowledge Base Article - 112112

For greater speed, use Group By on as few fields as possible. As an alternative, use the First() function where
appropriate.

For example, if your query is based on Customers and Orders, and you are grouping by Customer ID, Customer
Name, and Customer City, you could use First() for Customer Name and Customer City instead of Group By,
because the value will be the same for all rows with the same Customer ID.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Ошибка при использовании LAST / 21 сообщений из 21, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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