![]() |
Модераторы: skyboy |
![]() ![]() ![]() |
|
Alex0202 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 11.3.2005 Репутация: нет Всего: нет |
Таблица:
Как мне выделить(отсортеравать) все начиная с последней добавленой запись ? |
|||
|
||||
Black |
|
||||
![]() Web-Development ![]() ![]() Профиль Группа: Участник Сообщений: 980 Регистрация: 15.8.2004 Репутация: нет Всего: 45 |
Если я правильно понял что вам надо тогда так:
-------------------- Могу все, но ничего не умею :-) |
||||
|
|||||
Irokez |
|
|||
![]() индеец ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1180 Регистрация: 20.10.2004 Репутация: 5 Всего: 53 |
тогда надо объявить ID как счетчик (auto_increment) или ввести дополнительное поле типа timestamp |
|||
|
||||
Black |
|
|||
![]() Web-Development ![]() ![]() Профиль Группа: Участник Сообщений: 980 Регистрация: 15.8.2004 Репутация: нет Всего: 45 |
Irokez
ну я думаю Alex0202 занося ID делает ID++ ![]() Если же ID будут иметь одинаковые значения нарушится условие
Это сообщение отредактировал(а) PHP-DIRECTOR - 28.5.2005, 14:43 -------------------- Могу все, но ничего не умею :-) |
|||
|
||||
sergejzr |
|
|||
![]() Un salsero ![]() Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 1 Всего: 360 |
Вообще разве они не автоматом выйдут начиная с последней, если просто сделать
Насколько я знаю во многих БД это именно так. Без доп. условий записи складываются по мере их добавления и выдаются в обратном порядке. (Насчёт стандарта, не знаю... Вряд ли это так..) Добавлено @ 14:49 Это конечно если tiestamp'a нет. |
|||
|
||||
Irokez |
|
|||
![]() индеец ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1180 Регистрация: 20.10.2004 Репутация: 5 Всего: 53 |
наоборот, начиная с первой, идут |
|||
|
||||
sergejzr |
|
|||
![]() Un salsero ![]() Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 1 Всего: 360 |
Тогда если нет timestamp, можно извратиться создав темп - таблицу и скопировав в неё данные + timestamp. И выдавать наоборот ![]() |
|||
|
||||
Mal Hack |
|
||||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 8 Всего: 261 |
Если никакая сортировка не указана, то база выдаст записи, отсортированные по времени последнего добавления, т.е. так, в каком порядке они лежат в памяти. Первый зашел, последний вышел. НО, после отсортированной выборки вполне возможно, что результат безсортированной выборки будет отсортирован так, как на данный момент в памяти данные лежат. |
||||
|
|||||
Гость_Alex0202 |
|
|||
Unregistered |
id это имя пользователя vasya , petya ...
Я знаю что можно использовать timestamp но нехотелось бы иметь лишних полей так как база будет 500,000+ записей |
|||
|
||||
Irokez |
|
||||
![]() индеец ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1180 Регистрация: 20.10.2004 Репутация: 5 Всего: 53 |
может все таки наоборот? первая запись будет первой и в выборке
по-моему все таки лучше ввести еще одно поле - дата регистрации, потому что насколько мне известно иначе получить искомую выборку в MySQL (MyISAM) невозможно |
||||
|
|||||
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 8 Всего: 261 |
Может я опять туплю... То, что последним добавил первым выйдет в выборке. В любом случае зависит от того, как в данный конкретный момент в памяти таблица лежит. |
|||
|
||||
Guest |
|
|||
Unregistered |
Млин, а первичный ключ у тебя что? Хотяб во избежание дубликации строк следует ввести автоинкрементное поле. А также если в таблице не будет целочисленного id, как же будет производиться соединение? Точнее, что потом даст EXPLAIN ? |
|||
|
||||
Гость_Ignat |
|
|||
Unregistered |
Это был Ignat
![]() |
|||
|
||||
Alex0202 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 11.3.2005 Репутация: нет Всего: нет |
to Guest :
oid = mt_rand(999,999999); |
|||
|
||||
Гость_Alex0202 |
|
||||||
Unregistered |
А может можно сделать например
а потом перевернуть результат
только как ?? array_reverse совсем не то .. а идеально было бы есьи можно можно так:
![]() |
||||||
|
|||||||
Irokez |
|
||||
![]() индеец ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1180 Регистрация: 20.10.2004 Репутация: 5 Всего: 53 |
|
||||
|
|||||
DENNN |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 2 Всего: 43 |
Могут выдаваться, а могут и нет. В любом случае это не постоянно, т.к. противоречит принципам доступа к информации в БД. |
|||
|
||||
Ignat |
|
|||
![]() Флудератор ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4030 Регистрация: 19.4.2004 Где: غيليندزيك مدينة Репутация: 21 Всего: 73 |
ИМХО, маразм. А почему бы "нормальный" ID не ввести в базу? -------------------- Теперь при чем :P |
|||
|
||||
Bikutoru |
|
|||
Увлекающийся ![]() ![]() Профиль Группа: Участник Сообщений: 522 Регистрация: 24.5.2005 Где: Москва Репутация: 1 Всего: 22 |
Это не совсем верно. Точнее это верно до тех пор, пока ты не удалишь хотя бы одну запись. Данные в БД хранятся с разбиением по т.н. страницам, если ты удаляешь записи, то остальные не смещаются, а остаются на своих местах. А когда ты добавляешь запись, то она добавляется после последней записи или в какие-то свободные области имеющихся страниц. А вывод без сортировки происходит как раз по страницам, т.е. так как записи хранятся на диске... -------------------- Человек, словно в зеркале мир — многолик, Он ничтожен — и он же безмерно велик! Омар Хайям |
|||
|
||||
Гость_Alex0202 |
|
||||
Unregistered |
Ну а как подругому ? помимо таблицы `members` в которой определены oid(mt_rand()) и id(vasya) ... и другие поля, есть ещё 7 таблиц в которых я орентируюсь по oid. |
||||
|
|||||
Гость_Alex0202 |
|
||||
Unregistered |
Согласен , в базе нет порядка . |
||||
|
|||||
Гость_Alex0202 |
|
||||||
Unregistered |
Да.. это будет работать , но буду использовать это только в совсем крайний случай |
||||||
|
|||||||
lika |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 1.6.2005 Репутация: нет Всего: нет |
Можно поступить очень просто:
добавить поле даты создания, например createdate datetime Во время insert сажать в него sysdate() Во время выборки SELECT * FROM members ORDER BY createdate desc; Тогда будет гарантия, что первой появится именно последняя добавленная запись Лика |
|||
|
||||
Гость_Alex0202 |
|
|||
Unregistered |
Возможно вы прочитали ни всё Условие было : Сделать это недобавляя полей. |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | MySQL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |