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

वोटों के योग के साथ सभी पोस्ट प्राप्त करें और यदि वर्तमान उपयोगकर्ता ने प्रत्येक पोस्ट को वोट दिया है

आप लगभग अपनी क्वेरी के साथ हैं। बस filter का उपयोग करें वर्तमान उपयोगकर्ता की मतगणना प्राप्त करने के लिए खंड

SELECT 
    post.postID as postID, 
    post.title as title, 
    post.author as author,
    post.created as created,
    COALESCE(sum(votes.vote), 0) as voteCount, 
    COALESCE(sum(votes.vote) filter (where votes.username= 'username'), 0) as userVote  -- in '' just provide username for current login user
FROM post 
LEFT JOIN votes ON post.postID = votes.postID 
GROUP BY 1,2,3,4 
ORDER BY 5 DESC

दूसरा तरीका यह है कि नीचे की तरह एक और लेफ्ट जॉइन का उपयोग करें:

SELECT 
    p.postID as postID, 
    p.title as title, 
    p.author as author,
    p.created as created,
    COALESCE(sum(v1.vote), 0) as voteCount, 
    COALESCE(v2.vote , 0) as userVote  -- in '' just provide username for current login user
FROM post p
LEFT JOIN votes v1 ON p.postID = v1.postID 
LEFT JOIN votes v2 on p.postID = v2.postID and v2.username='username'
GROUP BY 1,2,3,4,v2.vote
ORDER BY 5 DESC

DEMO




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. प्रोग्राम से कॉपी को अज्ञात कॉलम के साथ एक गतिशील तालिका में पोस्ट करें

  2. PostgreSQL के साथ क्रॉस-डेटाबेस क्वेरी करना संभव है?

  3. PostgreSQL फ़ंक्शन पैरामीटर के रूप में तालिका का नाम

  4. कई अलग-अलग तालिकाओं के लिए एकल ट्रिगर प्रक्रिया लागू करें

  5. Azure फ़ंक्शंस में PostgreSQL से कनेक्शन के लिए एक्सेस टोकन प्राप्त करें