Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вывод данных из mySQL в обратном порядке
 
 автор: Dimonus   (14.02.2009 в 11:54)   письмо автору
 
 

Добрый день!
Есть таблица данных интернет магазина, в которой указаны категории товара и порядок их вывода на страницу магазина. Т. е изначально поле порядка вывода (sortid) забито нулем, но если ты хочешь сдвинуть эту позицию на первые места, то там прописываешь числа 1,2,3 ну или как хочешь, остальное, где остались нули выведется позже.

Имеем запрос:

$zapros =
"SELECT catid, parent, title, fulltitle
FROM $prefix"."categories
WHERE parent = $catid
ORDER BY sortid DESC";// выводим в обратном порядке

Мне нужно вывести запрос в обратном порядке.

DESC тут не работает, т.к в данном случае у всех строк таблицы это значение равно нулю.

Есть способ вывести базу ЗЕРКАЛЬНО в прямом смысле слова? т.е. если бы она выводилась так, то после изменения запроса абсолютно наоборот?

  Ответить  
 
 автор: cheops   (14.02.2009 в 12:48)   письмо автору
 
   для: Dimonus   (14.02.2009 в 11:54)
 

Это не всегда будет срабатывать, так как в результате обновления и удаления записей - содержимое таблицы будет "перемешиваться". Такого эффекта можно добиться, если вы введете ещё одну сортировку, скажем по алфавиту.
$zapros =
"SELECT catid, parent, title, fulltitle
FROM $prefix"."categories 
WHERE parent = $catid 
ORDER BY sortid DESC, title";

тогда в обратном порядке вы сможете выбрать записи, добавив DESC уже к title
$zapros =
"SELECT catid, parent, title, fulltitle
FROM $prefix"."categories 
WHERE parent = $catid 
ORDER BY sortid DESC, title DESC";

  Ответить  
 
 автор: Dimonus   (14.02.2009 в 12:56)   письмо автору
 
   для: cheops   (14.02.2009 в 12:48)
 

Так не пойдет. Алфавит не соблюдается.....
Видимо придется зеркалить при выводе результата уже из полученного массива читая его в обратном порядке.

  Ответить  
 
 автор: Trianon   (14.02.2009 в 12:59)   письмо автору
 
   для: Dimonus   (14.02.2009 в 12:56)
 

Не поможет.
Вы не можете полагаться на внутренний порядок данных в таблице вообще.
Он в любой момент может быть изменен без какого либо уведомления.
Вы и в прямом-то порядке гарантированный вывод можете получить лишь при наличии полностью детерминированного условия ORDER BY .

  Ответить  
 
 автор: cheops   (14.02.2009 в 13:00)   письмо автору
 
   для: Dimonus   (14.02.2009 в 12:56)
 

>Так не пойдет. Алфавит не соблюдается.....
Ориентируйтесь на другой столбец, например, на catid, вместо title

  Ответить  
 
 автор: Dimonus   (14.02.2009 в 13:20)   письмо автору
 
   для: cheops   (14.02.2009 в 13:00)
 

Да, видимо так и поступлю. Спасибо.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования