Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » Выбор записей с сортировкой (MySQL)

Ответить
Настройки темы
Выбор записей с сортировкой (MySQL)

Аватара для benya

Старожил


Сообщения: 302
Благодарности: 5

Профиль | Сайт | Отправить PM | Цитировать


Господа, имеется стандартная структура таблицы:
Код: Выделить весь код
CREATE TABLE `ttt` (
  `id` int(4) NOT NULL auto_increment,
  `text` varchar(100) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ;
Мне нужно отсортировать записи в том порядке в котором я хочу. К примеру мне нужно переместить запись на одну (на какое-то количество записей) выше или ниже текущей позиции.
Код: Выделить весь код
Категория1
Категория2
Категория3
А мне нужно сделать примерно так:
Код: Выделить весь код
Категория1
Категория3
Категория2
Кроме как вручную все удалять, расставлять, а потом вставлять ничего не придумал.

Отправлено: 16:05, 21-06-2006

 
mar mar вне форума

Аватара для mar

just mar


Moderator


Сообщения: 3904
Благодарности: 163

Профиль | Отправить PM | Цитировать


benya
добавляем одно поле
sort_order int(11) NOT NUL DEFAULT 0

расставляем значения в нем (например делаем для этого небольшой скрипт, чтобы это можно было делать из интерфейса), а потом спокойно делаем при выборке ORDER BY sort_order

Отправлено: 16:45, 21-06-2006 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ночной странник


Contributor


Сообщения: 4050
Благодарности: 83

Профиль | Сайт | Отправить PM | Цитировать


дополню mar иногда может быть полезным выставить атрибут "авто увеличение" чтобы не заботиться о номере при добавлении записи.

-------
можно практически все, но просто мы это еще не знаем.
главный враг програмиста это копипастинг
За хорошее сообщение не забываем нажимать ссылочку "Полезное сообщение"!


Отправлено: 16:49, 21-06-2006 | #3


Аватара для benya

Старожил


Сообщения: 302
Благодарности: 5

Профиль | Сайт | Отправить PM | Цитировать


mar,
Ок Предположим есть записи (text,sort_order):
Код: Выделить весь код
Видеокарта 1
Телевизор 2
Компьютер 3
Нужно Телевизор поставить выше чем Видеокарта, как???

Отправлено: 16:59, 21-06-2006 | #4

mar mar вне форума

Аватара для mar

just mar


Moderator


Сообщения: 3904
Благодарности: 163

Профиль | Отправить PM | Цитировать


я же сказала, если записей больше 3, то для этого лучше сделать спец интерфейс, а так руками:
UPDATE ttt SET sort_order = 1 WHERE text = 'Видеокарта';
UPDATE ttt SET sort_order = 2 WHERE text = 'Телевизор';
UPDATE ttt SET sort_order = 3 WHERE text = 'Компьютер';
только в интерфейсе я бы работала не с названиями, а с id и расставялла бы порядок сортировки каждый раз для всех систем сразу

Отправлено: 17:15, 21-06-2006 | #5


Ночной странник


Contributor


Сообщения: 4050
Благодарности: 83

Профиль | Сайт | Отправить PM | Цитировать


benya, mar
Цитата:
Нужно Телевизор поставить выше чем Видеокарта, как???
1) выставляем у 'Телевизор'.sort_order = 'Видеокарта'.sort_order - 0.5
2) запускаем скрипт пересортировки который выставляет всем элементам целые числа начиная с 1

или

'Телевизор'.sort_order = 'Видеокарта'.sort_order - ('Видеокарта'.sort_order - select '*'.sort_order where sort_order > 'Видеокарта'.sort_order) / 2

-------
можно практически все, но просто мы это еще не знаем.
главный враг програмиста это копипастинг
За хорошее сообщение не забываем нажимать ссылочку "Полезное сообщение"!


Отправлено: 17:31, 21-06-2006 | #6

mar mar вне форума

Аватара для mar

just mar


Moderator


Сообщения: 3904
Благодарности: 163

Профиль | Отправить PM | Цитировать


Vlad Drakula
это само собой, просто для этого надо понимать суть сортировки, а судя по прошлому вопросу, этого не было, потому и разжевала с UPDATE

Отправлено: 18:08, 21-06-2006 | #7


Аватара для benya

Старожил


Сообщения: 302
Благодарности: 5

Профиль | Сайт | Отправить PM | Цитировать


mar,
Таким образом я хотел узнать что делать с дублрующимися значениями. Если обновлять все, то может быть и покатит....

Отправлено: 18:44, 21-06-2006 | #8

mar mar вне форума

Аватара для mar

just mar


Moderator


Сообщения: 3904
Благодарности: 163

Профиль | Отправить PM | Цитировать


benya
ну так задал бы вопрос напрямую - что, мол, делать c дублирующими значениями
Ответы
- вариант 1. ввод через интерфейс, в котором все, например, скриптом JavaScrip раскидываешь стрелочками, а потом через foreach обновляешь все списком
- вариант 2. пример Влада
- вариант 3. через интерфейс, но двигаешь по одной и меняешь за один раз только 2 значения (местами)
наверное еще что-нибудь можно попридумывать

Отправлено: 21:09, 21-06-2006 | #9



Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » Выбор записей с сортировкой (MySQL)

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
MySQL - MySQL & MySQL-Front timon4ik Программирование и базы данных 2 06-04-2008 18:07
Mysql Выбор записей + к каждой count из другой таблицы benya Вебмастеру 11 26-05-2006 18:27
Выбор данных из mysql с приоритетом ? m2001 Вебмастеру 8 10-10-2005 20:18
Удаление записей из таблицы MySQL unknown Вебмастеру 3 21-05-2003 14:54
Удаление записей MikePr О сайте и форуме 7 21-10-2002 07:28




 
Переход