![]() |
|
Модераторы: LSD |
![]()
|
|
| z-END |
|
|||
![]() прафесар™ ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3014 Регистрация: 13.3.2003 Где: Венья, Пиетари Репутация: нет Всего: 102 |
есть таблица (MySQL+PHP) данные из которой выводятся по порядковому номеру (автоинкриментное поле - id) т.е. чем новее запись (по id) тем выше она отображается в списке.
и тут возникает необходимость запись под номером N поместить наверх, где она будет первой до добавления новой записи или "поднятия" другой записи из уже имеющихся... первая мысль которая мне пришла просто определять максимальное значение id в таблице и присваивать его нужной записи, но оказалось что id менять нельзя по условию, и вот я в прострации, что делать? -------------------- Каждый чилавек пасвоему праф...а памоему НЕТ! |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 24 Всего: 538 |
А запись только одну надо "поднять" или их может быть много?
Добавлено @ 22:13 Если MySQL поддерживает Union, то можно так:
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| z-END |
|
||||
![]() прафесар™ ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3014 Регистрация: 13.3.2003 Где: Венья, Пиетари Репутация: нет Всего: 102 |
нет, "поднимать" записи надо разные, вот например таблица:
данные выводятся в обратном порядке т.е. на выходе получим: brother,sister, papa,mama. теперь нам надо "поднять" маму, т.е. чтобы на выходе получить: mama,brother,sister, papa. после этого например добавили grandmother (id=5) и она выводится первой т.е. : grandmother,mama,brother,sister, papa. а потом "подняли" брата и получили: brother,grandmother,mama,sister, papa. вот, надеюсь так понятней будет... я думаю нужно вести дополнительное сортировочное поле, только вот как им пользоваться... х.з. -------------------- Каждый чилавек пасвоему праф...а памоему НЕТ! |
||||
|
|||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 24 Всего: 538 |
Заведи еще одно поле, такого же типа что и id и при вставке записи прописывай туда то же значение что и в id. А дальше как ты сказал при необходимости "поднять" поле берем новый id из последовательности (заметь не максимум а из последовательности) и прописываем его туда.
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| z-END |
|
||||
![]() прафесар™ ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3014 Регистрация: 13.3.2003 Где: Венья, Пиетари Репутация: нет Всего: 102 |
я в id значения непрописываю, они задаются мускулом (autoinc) и я чесно говоря незнаю как определить в момент добавления значение id... зы может Max(id)+1 просто делать и все?
а это как? Max(id)+1 неподходит? -------------------- Каждый чилавек пасвоему праф...а памоему НЕТ! |
||||
|
|||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 24 Всего: 538 |
Тогда надо при перед каждой вставкой выполнять select max(sort_id) + 1 from table, а это не есть гут, с точки зрения производительности. А насчет последовательностей надо подождать специалистов по MySQL. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| igon |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 327 Регистрация: 30.10.2004 Репутация: 3 Всего: 21 |
При условии добавления рекомендованного LSD поля (которому тоже хорошо бы быть autoinc)
PS: В MySQL не специалист -------------------- Хотите поговорить об этом? |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 13 Всего: 454 |
Ключевое поле (автоинкрементный ID, unique) используется ТОЛЬКО для органеизации связей и поддержания целостности БД. Если нужна сортировка - заводи для этого еще одно поле.
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| bas |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 446 Регистрация: 14.8.2002 Где: Молдова, Кишинев Репутация: нет Всего: 2 |
Еще одно поле , только так. Где номер будет соответствовать позиции, этот способ используется для построения TreeViews
Добавлено @ 09:37 Или новую таблицу, чтобы не изменять существующую. |
|||
|
||||
| igon |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 327 Регистрация: 30.10.2004 Репутация: 3 Всего: 21 |
По некотором размышлении (во сне?
В дополнительное поле заноси текущее системное время, вплоть до долей ms. У "поднимаемого" update этого поля тоже текущим системным временем. При выборке - обратная хронологическая сортировка -------------------- Хотите поговорить об этом? |
|||
|
||||
| z-END |
|
|||
![]() прафесар™ ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3014 Регистрация: 13.3.2003 Где: Венья, Пиетари Репутация: нет Всего: 102 |
а если на серваке хостеры время взад-вперед (зима/лето) двигать будут? -------------------- Каждый чилавек пасвоему праф...а памоему НЕТ! |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 24 Всего: 538 |
А sequence в MySQL есть?
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| z-END |
|
|||
![]() прафесар™ ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3014 Регистрация: 13.3.2003 Где: Венья, Пиетари Репутация: нет Всего: 102 |
чесно говоря незнаю -------------------- Каждый чилавек пасвоему праф...а памоему НЕТ! |
|||
|
||||
| igon |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 327 Регистрация: 30.10.2004 Репутация: 3 Всего: 21 |
С sequence, конечно, идеально было бы. -------------------- Хотите поговорить об этом? |
|||
|
||||
| z-END |
|
|||
![]() прафесар™ ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3014 Регистрация: 13.3.2003 Где: Венья, Пиетари Репутация: нет Всего: 102 |
ну впринципе да LSD, igon пасибо! -------------------- Каждый чилавек пасвоему праф...а памоему НЕТ! |
|||
|
||||
![]()
|
| Правила форума "Общие вопросы по базам данных" | |
|
|
Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:
Данный форум не предназначен для:
Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение.
Полезные советы: Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | СУБД, общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |