powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Сортировка при выводе дерева сообщений
11 сообщений из 11, страница 1 из 1
Сортировка при выводе дерева сообщений
    #38367760
grecha10
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!

Есть таблица для хранения отзывов на товары. Продавец товара на каждый отзыв может написать комментарий.

Задача: вывести данные из таблицы так, что бы самые последние отзывы были в начале. Разумеется, комментарий продавца должен быть под комментируемым отзывом.

Не имеющие значения для текущей задачи поля (типа idProduct) не указываю.
Поле Описаниеid Уникальный номерparentid Номер родительского разделаlev Уровень сообщения: 1- отзыв; 2- комментарийpath Путь к строке

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
--
-- Структура таблицы `reviews`
--

CREATE TABLE `reviews` (
  `id` mediumint(9) NOT NULL auto_increment,
  `parentid` mediumint(9) default NULL,
  `path` varchar(20) NOT NULL,
  `lev` tinyint(4) NOT NULL,
   PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=52 ;



Пример данных в таблице
idparentidpathlev1NULL104511/0000004514411/0000004414311/0000004314111/0000004114211/0000004214011/00000040146401/00000040/00000046247451/00000045/00000047248411/00000041/0000004825011/00000050151501/00000050/000000512

Для вывода дерева использую запрос:

Код: sql
1.
SELECT r.* FROM reviews r WHERE r.id<>'1' ORDER BY r.path



Получается прекрасно, но новые отзывы оказываются внизу выдачи. А мне нужно чтобы они были вверху. Добавляю DESC:
Код: sql
1.
SELECT r.* FROM reviews r WHERE r.id<>'1' ORDER BY r.path DESC



И получается ожидаемая и предсказуемая фигня - порядок вывода отзывов правильный но комментарии в списке выше отзывов.
Как получить из этой таблицы/данных такой порядок вывода:

id
50
51
45
47
44
43
42
41
48
40
40
...
Рейтинг: 0 / 0
Сортировка при выводе дерева сообщений
    #38367792
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grecha10Продавец товара на каждый отзыв может написать комментарий.Может ли продавец написать более одного комментария на каждый отзыв?
...
Рейтинг: 0 / 0
Сортировка при выводе дерева сообщений
    #38367804
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
order by 
if(
  lvl=2,
  replace(path,concat('/',right(100000000+id,8)),''),
  path
), id

Но без индекса :(
...
Рейтинг: 0 / 0
Сортировка при выводе дерева сообщений
    #38367806
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
то есть if(..)desc,id
...
Рейтинг: 0 / 0
Сортировка при выводе дерева сообщений
    #38367821
grecha10
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft,
да может.
...
Рейтинг: 0 / 0
Сортировка при выводе дерева сообщений
    #38367825
grecha10
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cygapb-007,
круто, работает!
А если path сделать индексным полем, тоже не будет использоваться?
Есть ли другие варианты что бы ускорить этот запрос?
...
Рейтинг: 0 / 0
Сортировка при выводе дерева сообщений
    #38367832
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grecha10miksoft,
да может.поправочка
Код: sql
1.
order by if(lvl=1,path,replace(path,concat('/',right(100000000+id,8)),''))desc, id
...
Рейтинг: 0 / 0
Сортировка при выводе дерева сообщений
    #38367843
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grecha10А если path сделать индексным полем, тоже не будет использоваться?не будет
Есть ли другие варианты что бы ускорить этот запрос?можно попробовать сделать индекс таким же, как условие сортировки - увеличит размер базы, но сортировать каждый раз уже не будет. Наверное
...
Рейтинг: 0 / 0
Сортировка при выводе дерева сообщений
    #38367891
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cygapb-007можно попробовать сделать индекс таким же, как условие сортировкинету в мускле функциональных индексов
придётся доп.поле добавлять
...
Рейтинг: 0 / 0
Сортировка при выводе дерева сообщений
    #38369253
grecha10
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cygapb-007,
большое спасибо!!
...
Рейтинг: 0 / 0
Сортировка при выводе дерева сообщений
    #38369255
grecha10
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir,
я не очень хорошо понимаю как это сделать. Можете помочь примером или решением?
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Сортировка при выводе дерева сообщений
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]