PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Thứ tự nhận xét theo đường dẫn chủ đề và theo tổng số phiếu bầu

Chỉ cần tích một mảng khác bên cạnh đường dẫn, phù thủy sẽ không chỉ chứa id của mỗi nhận xét trong đường dẫn của nó, nhưng total_votes (dưới dạng số âm) trước mỗi id. Sau đó, bạn có thể đặt hàng theo cột đó.

WITH RECURSIVE first_comments AS (
(
 (
   SELECT id, text, level, parent_id, array[id] AS path, total_votes,
          array[-total_votes, id] AS path_and_votes
   FROM comments
   WHERE comments."postId" = 1 AND comments."level" = 0 
 )
)
UNION
 (
  SELECT e.id, e.text, e.level, e.parent_id, (fle.path || e.id), e.total_votes,
         (fle.path_and_votes || -e.total_votes || e.id)
  FROM
  (
    SELECT id, text, level, parent_id, total_votes FROM comments
    WHERE comments."postId" = 1
  ) e, first_comments fle
  WHERE e.parent_id = fle.id
 )
)
SELECT id, text, level, total_votes, path from first_comments ORDER BY path_and_votes ASC

SQLFiddle (chỉ dữ liệu - không có CTE đệ quy)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách thay đổi ngôn ngữ khi định dạng số trong PostgreSQL

  2. Biên dịch phần mở rộng mongo_fdw có thể ghi trên định dạng nhị phân của cài đặt PostgreSQL.

  3. Postgresql - Tạo cơ sở dữ liệu &bảng động

  4. Chạy di chuyển Django trên dự án dày đặc

  5. Đo lường thống kê điểm kiểm tra PostgreSQL