Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.05.2010, 08:14   #1
vladtr
Форумчанин
 
Регистрация: 28.07.2008
Сообщений: 119
Сообщение Как вытащить последние 100 записей?

Подскажите пожалуйста, как вытащить последние 100 записей из таблицы

у меня появился, алгоритм:
1. создать временную таблицу с идентификатором id (плюс поля моей таблицы),
2. перенести туда по порядку все записи из таблицы,
3. а потом выполнить запрос указанный dekameron-ом (SELECT * FROM tablename ORDER BY id DESC LIMIT 0,100)
4. удалить временную таблицу.

это похоже на программу SQL, т.к. нужно выполнить последовательно 4 шага в скрипте, как это сделать не знаю.

Последний раз редактировалось vladtr; 27.05.2010 в 07:35. Причина: появилась идея
vladtr вне форума Ответить с цитированием
Старый 26.05.2010, 08:18   #2
dekameron
Форумчанин
 
Аватар для dekameron
 
Регистрация: 27.04.2010
Сообщений: 185
По умолчанию

SELECT * FROM tablename ORDER BY id DESC LIMIT 0,100;

Вариант не полностью универсальный, т.к. предусматривает наличие в таблице первичного ключа, но какие либо идентификаторы присутствуют в 99% таблиц.
Так же можно упорядочить (ORDER BY) например по дате
Помог - тырк на весы
dekameron вне форума Ответить с цитированием
Старый 26.05.2010, 08:24   #3
vladtr
Форумчанин
 
Регистрация: 28.07.2008
Сообщений: 119
Сообщение

Цитата:
Сообщение от dekameron Посмотреть сообщение
.... но какие либо идентификаторы присутствуют в 99% таблиц....
У меня как раз такой случай что нет идентификатора, а есть просто набор записей и мне нужно взять данные только последние
vladtr вне форума Ответить с цитированием
Старый 26.05.2010, 11:03   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
а есть просто набор записей и мне нужно взять данные только последние
понятие первые (последние) подразумевает упорядоченность по какому-либо параметру. Если упорядоченности нет то можно брать первые попавшиеся и говорить, что они и есть последние. Все равно никто никогда не докажет обратного (порядка же нет).
Если все же порядок есть то смотри предыдущие посты.
(order by ... DESC)
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 26.05.2010, 11:38   #5
vladtr
Форумчанин
 
Регистрация: 28.07.2008
Сообщений: 119
Сообщение

Цитата:
Сообщение от evg_m Посмотреть сообщение
понятие первые (последние) подразумевает упорядоченность по какому-либо параметру. Если упорядоченности нет то можно брать первые попавшиеся и говорить, что они и есть последние. Все равно никто никогда не докажет обратного (порядка же нет).
...
(order by ... DESC)
это понятно, но у меня ситуация такая - в таблицу в течении дня пишутся значения.
Поля - <ПолеДата>,<ФИО>, <СУмма>,<Объект>
В <ПолеДаты>, куда заносится системная дата компьютера. Записи пишутся последовательно. Во время работы произошел сброс даты на меньшую - кассир не заметил и продолжал вести регистрацию. Таким образом работал 2 дня когда начал делать отчет, то не увидел значений за пропущенные даты. Мне доказывать не надо, мне нужно взять последние данные начиная с того момента когда произошел сбой и сделать исправления.
vladtr вне форума Ответить с цитированием
Старый 26.05.2010, 11:58   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А не проще взять данные которые более той меньшей даты и менее текущей?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.05.2010, 12:11   #7
vladtr
Форумчанин
 
Регистрация: 28.07.2008
Сообщений: 119
Сообщение

Цитата:
Сообщение от Stilet Посмотреть сообщение
А не проще взять данные которые более той меньшей даты и менее текущей?
дело в том что меньший год уже прошел, и если я запрошу эту дату, то вылезут и те что были уже ранее введены... Так что я думаю, мне нужно взять только последние записи.
vladtr вне форума Ответить с цитированием
Старый 26.05.2010, 15:20   #8
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

нужно взять данные (за проблемный период) из правильного (до сбоя) backup и сравнить с текущими. Разница и есть наши (ошибочные) записи.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 27.05.2010, 07:08   #9
vladtr
Форумчанин
 
Регистрация: 28.07.2008
Сообщений: 119
Сообщение

Цитата:
Сообщение от evg_m Посмотреть сообщение
нужно взять данные (за проблемный период) из правильного (до сбоя) backup и сравнить с текущими. Разница и есть наши (ошибочные) записи.
Уважаемые, коллеги !!! мне нужно решение без дополнительных условий (наличие backup, наличие идентификатора, и т.д.) У меня есть таблица без идентификатора, и необходимо выбрать последние 100 записей из таблицы (значение 100 условное, я его сам определю позже точнее, когда будет запрос на выборку).

у меня появился, алгоритм:
1. создать временную таблицу с идентификатором id (плюс поля моей таблицы),
2. перенести туда по порядку все записи из таблицы,
3. а потом выполнить запрос указанный выше dekameron-ом (SELECT * FROM tablename ORDER BY id DESC LIMIT 0,100;)
4. удалить временную таблицу.

это похоже на программу SQL, т.к. нужно выполнить последовательно 4 шага в скрипте, как это сделать не знаю.

Последний раз редактировалось vladtr; 27.05.2010 в 07:32.
vladtr вне форума Ответить с цитированием
Старый 27.05.2010, 07:13   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

СУБД какая у Вас?

а решение Вам выше предложили
единственное, вместо ORDER BY ID Desc
напишете ORDER BY <ПолеДата> Desc

и всё.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти произведение всех чётных чисел от -100 до 100. Makcumqa Помощь студентам 8 18.03.2010 22:31
заполнить файл целыми числами из отрезка [—100; 100] с помощью датчика случайных чисел. ALEX-7-7-7 Паскаль, Turbo Pascal, PascalABC.NET 4 05.04.2009 14:51
Как из кода вытащить 5,6,7 символы Romuald Microsoft Office Excel 6 14.01.2009 09:25
как вытащить форму Барби Помощь студентам 5 01.10.2008 09:02
Как вытащить из XP список пользователей UnD)eaD)Snake Win Api 10 29.04.2008 20:38