@Nube

Как получить список родительских ID?

Имеется таблица comments
comment (
  id_comment          integer PRIMARY KEY ,
  path                integer[] not null,
  content              text,
  rating              integer
)

Нужно получить сначала комментария с высоким рейтингом
SELECT * FROM comment ORDER BY rating DESC LIMIT
работает хорошо, но если дочерний коммент имеет рейтинг выше родительского или другого он сперва выведет его .
А хотелось бы что бы сортировка по рейтингу велась только первого родителя и у тех у кого нет "детей"
вкратце, имеем :
id |  path   |    content                     | rating
----+---------+--------------------------------+---------
  1 | {1}     | я комментарий 1                | 1
  2 | {1,2}   | я дочь        комментария 1    | 5
  3 | {3}     | я комментарий 3                | 3
  4 | {4}     | я  комментарий 4               | 2
  
результат сортировки  должен быть :
 id |  path   |    content                     | rating
----+---------+--------------------------------+---------
  3 | {3}     | я комментарий 3                | 3
  4 | {4}     | я комментарий 4                | 2
  1 | {1}     | я комментарий 1                | 1
  2 | {1,2}   | я дочь комментария 1           | 5

Использую Materialized Path паттерн .
  • Вопрос задан
  • 51 просмотр
Решения вопроса 1
BuriK666
@BuriK666
Компьютерный псих
https://www.postgresql.org/docs/current/static/fun...
array_length
SELECT * FROM comment ORDER BY array_length(path, 1) ASC, rating DESC
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@d-stream
Готовые решения - не подаю, но...
А не лучше ли рекурсивно брать всю цепочку, притом собирать рейтинг детей как avg например?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы