PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

थ्रेड पथ और कुल वोटों की संख्या के आधार पर टिप्पणियों का आदेश दें

पथ के बगल में बस एक और सरणी जमा करें, डायन में न केवल id होगा अपने पथ में प्रत्येक टिप्पणी की, लेकिन total_votes (ऋणात्मक संख्या के रूप में) प्रत्येक आईडी से पहले। उसके बाद, आप उस कॉलम के अनुसार ऑर्डर कर सकते हैं।

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 (केवल डेटा -- पुनरावर्ती CTE के बिना)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL_ASCII से एक Postgresql डेटाबेस को परिवर्तित करना, जिसमें मिश्रित एन्कोगिंग प्रकार शामिल हैं, UTF-8

  2. कैसे Atan () PostgreSQL में काम करता है

  3. QueryDSL के साथ Postgresql सरणी कार्य

  4. Heroku . से आंशिक डेटाबेस डाउनलोड करें

  5. Jsonb सरणी के साथ रेल (पोस्टग्रेज) क्वेरी