Можно ли с помощью запроса UPDATE отсортировать записи?

  • Автор темы Автор темы deepslam
  • Дата начала Дата начала

deepslam

Новичок
Можно ли с помощью запроса UPDATE отсортировать записи?

Всем привет!

Задача:

Нужно отсортировать записи, но не просто при выводе, а чтобы и потом эта последовательность сохранилась. Сортировать надо по алфавиту. Понимаю, можно написать алгоритм и обновить всё, мне кажется одним запросом будет элегантнее и быстрее.

Подскажите какую функцию для этого использовать и возможно ли это вообще.

Заранее спасибо!
 
deepslam
Нужно отсортировать записи, но не просто при выводе, а чтобы и потом эта последовательность сохранилась.
Зачем это нужно?

Обычно все СУБД хранят данные в произвольном порядке, а сортировку обычно делают так, чтобы она по возможности использовала индексы, так что смысл таких действий мне не понятен.
 
У меня в каталоге, у рубрик есть поля сортировка, где выставляются значения и потом рубрики выводятся в соответствии с этими значениями.

Но попросили еще сделать кнопку сортировать по алфавиту, поэтому мне нужно, чтобы нажав на кнопочку автоматом выставились приоритеты. Такова суть задачи.

Подозреваю, что можно это сделать одним запросом.
 
deepslam
Но попросили еще сделать кнопку сортировать по алфавиту
В чем проблема дописать к запросу на выборку ORDER BY <поле_по_котором_сортируем_по_алфавиту> ?
 
Не проблема, но что если нужно сделать это опционально?
Я понимаю, что можно сделать в настройках что то типа сортировать по алфавиту или по индексам. Просто интересен сам вопрос с update.
 
Mr_Max: Настройки в админке - выпадающий список с выбором способа сортировки.
 
нет, наверное так не получится, видимо нужно выбрать все записи типа
select * from catalog where subdi=$id
А далее уже в цикле расставить приоритеты для каждого раздела.
 
Это ещё почему?
+
А попробовать уж никак нельзя?
 
Не проблема, но что если нужно сделать это опционально?
вот опционально и дописывай
Просто интересен сам вопрос с update.
ответы просто интересные вопросы смотрим самостоятельно, в умных книжках.
 
deepslam
ты хочешь чтобы при сортировке менялся сам порядок хранения данных в БД, а не только порядок вывода данных из БД в результате запроса?
 
Да

-~{}~ 02.10.07 00:15:

Но я уже реализовал, без всяких запросов, сортирует PHP , т.к. алгоритм получения дерева разделов хитрый, с одним SQL запросом, т.е. сначала получаем все рубрики, а потом уже php сортирует. Иначе при 15000 рубрик очень тормозит SQL.
 
deepslam
Не надо этого хотеть. Читайте про ORDER.

Точка.

-~{}~ 01.10.07 23:16:

deepslam
Ужасно тормозит не SQL, а вы. Читаем про индексы и explain.
 
Можно сделать через временную таблицу.

1.
[sql]
create tempoary table tmp{
id,
category,
ordinal,
Primary key (category,ordinal)
}
[/sql]

2.
[sql]
insert
select from sourse_table
order by name
[/sql]

3.
[sql]
update sourse_table,tmp
set sourse_table.ordinal=tmp.ordinal-1
where sourse_table.id=tmp.id
[/sql]
 
clevel
Можно сделать через временную таблицу.
Можно. Но только это совсем не то, что нужно автору. Автору нужна просто сортировка, а не дополнительное копирование данных.

P.S. Мне почемуто кажется, что создание временной таблицы будет гораздо медленнее чем сортировка по проиндексированному полю.
 
Сверху