|
|
|
|
|
для: pautina
(06.02.2012 в 06:35)
| | нужна не просто сортировка, а именно обновление полей где ID в Fielв 4 идёт по возрастанию
вы можете объяснить зачем это вам нужно?
- вы хотите совсем отказаться от ORDER BY ? так этого у вас никогда не получиться.
- если вам нужны порядковые номера строк, то их не хранят в таблице их формируют при выводе
- обычно создается поле для хранения времени добавления строки в базу, по нему и происходит сортировка как в прямом, так и в обратном порядке
- если нужен какой-то другой порядок, то создается поле в котором храниться "вес" (и это опять же не порядковый номер) строки, который в ходе работы может меняться, это достаточно сложная процедура и требует знания не только программирования, но и математики.
- и наконец самая главная ошибка всех начинающих программистов, это попытка избавиться от пропусков id после удаления строки, это делать категорически запрещено. | |
|
|
|
|
|
|
|
для: cheops
(05.02.2012 в 11:40)
| | Смотрите мы добавиль новый столбец Field 4
ALTER TABLE `table_1`
ADD `Field 4` VARCHAR( 255 ) NULL
AFTER `Field 3`
|
После изменили там нужным нам образом значение id
UPDATE table_1
SET `Field 4` = 5 + 1 - ID
|
Теперь как мне обновить содержимое таблицы
нужна не просто сортировка, а именно обновление полей где ID в Fielв 4 идёт по возрастанию.
Наверняка есть какой либо межанизм или алгоритм который может это сделать.
Как можно реализовать обновление? | |
|
|
|
|
|
|
|
для: pautina
(04.02.2012 в 11:42)
| | Посчитайте заранее количество элементов в таблице или вычислите максимальное значение ID, прибавьте к нему единицу и вычтите значение ID, так вы получите значение для нового столбца. Ниже приводится пример запроса, демонстрирующего сказанное.
UPDATE table_1
SET `Field 4` = 5 + 1 - ID
|
| |
|
|
|
|
|
|
|
для: cheops
(04.02.2012 в 12:22)
| | Да | |
|
|
|
|
|
|
|
для: pautina
(04.02.2012 в 11:42)
| | Т.е. для ID = 1, это новое поле будет принимать значение 5, а для ID = 2, новое поле будет принимать значение 4? | |
|
|
|
|
|
|
|
для: cheops
(03.02.2012 в 17:42)
| | Физическая сортировка или нет не могу сказать? До этого ничего подобного не реализовывал,
хотя задача вроде бы не сложная.
Нужно каким то образом отсортировать данные по id в обратном порядке и обновить содержимое таблицы.
Пусть у меня имеется table_1
CREATE TABLE IF NOT EXISTS table_1 (
`ID` VARCHAR(255),
`Field 1` VARCHAR(255),
`Field 2` VARCHAR(255),
`Field 3` longtext) TYPE=MyISAM DEFAULT CHARSET=utf8;
INSERT IGNORE INTO table_1 (`ID`,`Field 1`,`Field 2`,`Field 3`) VALUES
('1','Уроки Photoshop 1','Рубрика: Эффекты 1','Содержимое контента 1'),
('2','Уроки Photoshop 2','Рубрика: Эффекты 2','Содержимое контента 2'),
('3','Уроки Photoshop 3','Рубрика: Эффекты 3','Содержимое контента 3'),
('4','Уроки Photoshop 4','Рубрика: Эффекты 4','Содержимое контента 4'),
('5','Уроки Photoshop 5','Рубрика: Эффекты 5','Содержимое контента 5')
|
Добавте поле в котором укажите порядок вывода (создаём новое поле Field 4)
ALTER TABLE `table_1`
ADD `Field 4` VARCHAR( 255 ) NULL
AFTER `Field 3`
|
Пока это поле пустое
нужно записать в него данные по ID в обратном порядке | |
|
|
|
|
|
|
|
для: Valick
(03.02.2012 в 17:33)
| | Имеется в виду физическая сортировка? Можно при помощи ALTER TABLE tbl ORDER BY fld. | |
|
|
|
|
|
|
|
для: pautina
(03.02.2012 в 17:25)
| | Ни скажете как добавить новое поле
phpmyadmin обычно помогает :)
указать порядок вывода
вот тут сложнее, либо руками указать, либо еще по какому хитрому алгоритму | |
|
|
|
|
|
|
|
для: pautina
(03.02.2012 в 17:25)
| | Новое поле можно добавить при помощи оператора ALTER TABLE. Сортировку лучше делать при помощи ключевого слова ORDER BY.
PS Давайте лучше новую тему заведем под новые вопросы - обсуждение веселее пойдет. | |
|
|
|
|
|
|
|
для: pautina
(27.01.2012 в 16:59)
| | Ни скажете как добавить новое поле и указать порядок вывода. ну и сортировку сделать? | |
|
|
|
|