Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / КАК вернуть из базы отсортированной по времени n последних записей / 14 сообщений из 14, страница 1 из 1
20.08.2001, 13:17
    #32012252
Spy--
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КАК вернуть из базы отсортированной по времени n последних записей
КАК вернуть из базы отсортированной по времени n последних записей
Можно ли это одним запросом типа select bottom 10 from... order by time....
...
Рейтинг: 0 / 0
20.08.2001, 13:25
    #32012257
dmitry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КАК вернуть из базы отсортированной по времени n последних записей
select top 10 bottom from... order by time desc
...
Рейтинг: 0 / 0
20.08.2001, 13:27
    #32012258
ChA
ChA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КАК вернуть из базы отсортированной по времени n последних записей
Чуть-чуть иначе
select top 10 * from... order by time desc
Но если сортировка нужна прямая, то можно создать 1 запрос в виде
view, а из того уже вызывать order by time
Если у каждой записи есть уникальный ID,
то можно и так
SELECT * FROM...
where id in (select top 10 id from... order by time desc)
order by time
Наверняка, есть еще и масса других способов...
...
Рейтинг: 0 / 0
20.08.2001, 13:35
    #32012259
dmitry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КАК вернуть из базы отсортированной по времени n последних записей
2 ChA: Что значит прямая сортировка? В смысле первые 10 записей? А зачем тогда так усложнять? Почему просто не опустить desc?..
И какой смысл в SELECT * FROM...
where id in (select top 10 id from... order by time desc)???
Это ж два раза одну и ту же работу делать....
Но раз уж на то пошло, то я пожалуй предложу еще и
SELECT * FROM... where id in(select id from ...
where id in (select top 10 id from... order by time desc))
...
Рейтинг: 0 / 0
20.08.2001, 13:39
    #32012260
dmitry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КАК вернуть из базы отсортированной по времени n последних записей
2 Spy : В Вашем запросе я воспринял bottom как имя поля и только теперь до меня дошло что это еще и дно по англицки
На этом месте должен быть список полей которые необходимо выбрать
...
Рейтинг: 0 / 0
20.08.2001, 14:24
    #32012270
ChA
ChA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КАК вернуть из базы отсортированной по времени n последних записей
2 Dmitry
Простите, ради Бога, но Вы внимательно прочитали исходый вопрос
и мой запрос ?
Необходимо вернуть последние(!) 10 записей - исходный вопрос, но !
Пользователь может не захотеть видеть их в обратном порядке, то
есть DESC, а в прямом, то есть - ASC. Я не знаю нужно ли это,
поэтому просто попытался предсказать, какой вопрос последует дальше,
так как часто именно такие пожелания и возникают.
...
Рейтинг: 0 / 0
20.08.2001, 14:45
    #32012272
dmitry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КАК вернуть из базы отсортированной по времени n последних записей
Ааа, тогда понятно, сорри. Просто в вопросе про это ничего не сказано, а инициатива обычно наказуема
поэтому я не стал дальше заботиться об удобстве пользователя и Ваш ответ меня несколько удивил.
С моей стороны вопрос снят.
...
Рейтинг: 0 / 0
20.08.2001, 15:34
    #32012276
SergSuper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КАК вернуть из базы отсортированной по времени n последних записей
А в лоб если:
SELECT * FROM
(select top 10 * from... order by time desc) as t
order by time
...
Рейтинг: 0 / 0
21.08.2001, 04:19
    #32012302
Spy--
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КАК вернуть из базы отсортированной по времени n последних записей
А в представлении можно делать
order By
а то у меня что-то ругается?
...
Рейтинг: 0 / 0
21.08.2001, 06:07
    #32012313
Spy--
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КАК вернуть из базы отсортированной по времени n последних записей
Что-то у меня не правильно, запрос возвращает сортированное по времени по убыванию вместо по возрастанию

select * from
(SELECT top 10 Protokol.Rid AS Рид, Uslugi.Usluga AS Услуга, Name1.Name AS Исполнитель, Name.Name AS Заказчик,
Protokol.DataTime AS Время, Errors.Description AS Ошибка
FROM Errors INNER JOIN
Protokol ON Errors.ID_Errors = Protokol.ID_Errors INNER JOIN
Name ON Protokol.ID_Who = Name.KeyName INNER JOIN
Uslugi ON Protokol.NumUslugi = Uslugi.NumUslugi INNER JOIN
Name Name1 ON Protokol.ID_Executor = Name1.KeyName
order by Protokol.datatime desc) as t
Order By t.Время asc

как будто работает только эта часть

SELECT top 10 Protokol.Rid AS Рид, Uslugi.Usluga AS Услуга, Name1.Name AS Исполнитель, Name.Name AS Заказчик,
Protokol.DataTime AS Время, Errors.Description AS Ошибка
FROM Errors INNER JOIN
Protokol ON Errors.ID_Errors = Protokol.ID_Errors INNER JOIN
Name ON Protokol.ID_Who = Name.KeyName INNER JOIN
Uslugi ON Protokol.NumUslugi = Uslugi.NumUslugi INNER JOIN
Name Name1 ON Protokol.ID_Executor = Name1.KeyName
order by Protokol.datatime desc
...
Рейтинг: 0 / 0
21.08.2001, 07:00
    #32012330
SergSuper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КАК вернуть из базы отсортированной по времени n последних записей
Не знаю, у меня например такое выдаёт нормально:

select crdate, name from (select top 10 * from sysobjects order by crdate desc) as t order by crdate

может Вы невнимательно посмотрели?
...
Рейтинг: 0 / 0
21.08.2001, 07:57
    #32012353
Michael+Hopgarden
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КАК вернуть из базы отсортированной по времени n последних записей
2SergSuper. В качестве наблюдения.

select crdate from (select top 3 * from sysobjects order by crdate desc) as t order by crdate

crdate
---------------------------
2001-08-10 17:29:05.773
2001-08-10 17:29:05.833
2001-08-10 17:29:05.903
(3 row(s) affected)

select * from (select top 3 * from sysobjects order by crdate desc) as t order by crdate [asc]

... crdate ...
... ----------------------- ...
... 2001-08-10 17:29:05. 903 ...
... 2001-08-10 17:29:05. 833 ...
... 2001-08-10 17:29:05. 773 ...
(3 row(s) affected)


PS 7.0
...
Рейтинг: 0 / 0
21.08.2001, 10:41
    #32012386
SergSuper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КАК вернуть из базы отсортированной по времени n последних записей
Залепуха что ли?
У меня всё нормально:

select * from (select top 3 * from sysobjects where type='S' order by crdate desc) as t order by crdate

...11:08:56.497...
...11:08:56.497...
...11:08:56.513...

Но SQL 2000
...
Рейтинг: 0 / 0
22.08.2001, 10:28
    #32012511
Michael Hopgarden
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КАК вернуть из базы отсортированной по времени n последних записей
>Залепуха что ли?
Похоже на то.

Кстати, с where type='S' тоже отработало корректно.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / КАК вернуть из базы отсортированной по времени n последних записей / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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