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

deepslam

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

Всем привет!

Задача:

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

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

Заранее спасибо!
 

phprus

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

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

deepslam

Новичок
У меня в каталоге, у рубрик есть поля сортировка, где выставляются значения и потом рубрики выводятся в соответствии с этими значениями.

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

Подозреваю, что можно это сделать одним запросом.
 

phprus

Moderator
Команда форума
deepslam
Но попросили еще сделать кнопку сортировать по алфавиту
В чем проблема дописать к запросу на выборку ORDER BY <поле_по_котором_сортируем_по_алфавиту> ?
 

deepslam

Новичок
Не проблема, но что если нужно сделать это опционально?
Я понимаю, что можно сделать в настройках что то типа сортировать по алфавиту или по индексам. Просто интересен сам вопрос с update.
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума

deepslam

Новичок
Mr_Max: Настройки в админке - выпадающий список с выбором способа сортировки.
 

deepslam

Новичок
нет, наверное так не получится, видимо нужно выбрать все записи типа
select * from catalog where subdi=$id
А далее уже в цикле расставить приоритеты для каждого раздела.
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Это ещё почему?
+
А попробовать уж никак нельзя?
 

Фанат

oncle terrible
Команда форума
Не проблема, но что если нужно сделать это опционально?
вот опционально и дописывай
Просто интересен сам вопрос с update.
ответы просто интересные вопросы смотрим самостоятельно, в умных книжках.
 

Beavis

Banned
deepslam
ты хочешь чтобы при сортировке менялся сам порядок хранения данных в БД, а не только порядок вывода данных из БД в результате запроса?
 

deepslam

Новичок
Да

-~{}~ 02.10.07 00:15:

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

HraKK

Мудак
Команда форума
deepslam
Не надо этого хотеть. Читайте про ORDER.

Точка.

-~{}~ 01.10.07 23:16:

deepslam
Ужасно тормозит не SQL, а вы. Читаем про индексы и explain.
 

clevel

Новичок
Можно сделать через временную таблицу.

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]
 

phprus

Moderator
Команда форума
clevel
Можно сделать через временную таблицу.
Можно. Но только это совсем не то, что нужно автору. Автору нужна просто сортировка, а не дополнительное копирование данных.

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