![]() |
Выбор записей с сортировкой (MySQL)
Господа, имеется стандартная структура таблицы:
Код:
CREATE TABLE `ttt` ( Код:
Категория1 Код:
Категория1 |
benya
добавляем одно поле sort_order int(11) NOT NUL DEFAULT 0 расставляем значения в нем (например делаем для этого небольшой скрипт, чтобы это можно было делать из интерфейса), а потом спокойно делаем при выборке ORDER BY sort_order |
дополню mar иногда может быть полезным выставить атрибут "авто увеличение" чтобы не заботиться о номере при добавлении записи.
|
mar,
Ок Предположим есть записи (text,sort_order): Код:
Видеокарта 1 |
я же сказала, если записей больше 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 и расставялла бы порядок сортировки каждый раз для всех систем сразу |
benya, mar
Цитата:
2) запускаем скрипт пересортировки который выставляет всем элементам целые числа начиная с 1 или 'Телевизор'.sort_order = 'Видеокарта'.sort_order - ('Видеокарта'.sort_order - select '*'.sort_order where sort_order > 'Видеокарта'.sort_order) / 2 |
Vlad Drakula
это само собой, просто для этого надо понимать суть сортировки, а судя по прошлому вопросу, этого не было, потому и разжевала с UPDATE =) |
mar,
Таким образом я хотел узнать что делать с дублрующимися значениями. Если обновлять все, то может быть и покатит.... |
benya
ну так задал бы вопрос напрямую - что, мол, делать c дублирующими значениями :) Ответы - вариант 1. ввод через интерфейс, в котором все, например, скриптом JavaScrip раскидываешь стрелочками, а потом через foreach обновляешь все списком - вариант 2. пример Влада - вариант 3. через интерфейс, но двигаешь по одной и меняешь за один раз только 2 значения (местами) наверное еще что-нибудь можно попридумывать :) |
Время: 00:27. |
Время: 00:27.
© OSzone.net 2001-