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

उपयोगकर्ता इनबॉक्स के लिए अंतिम वार्तालाप प्राप्त करने की क्वेरी

मेरी समझ के अनुसार, आपको प्रति उपयोगकर्ता के आधार पर बातचीत का नवीनतम संदेश प्राप्त करने की आवश्यकता है (पिछले 10 नवीनतम वार्तालापों में से)

अपडेट करें: मैंने latest_conversation_message_id . प्राप्त करने के लिए क्वेरी को संशोधित किया है प्रत्येक उपयोगकर्ता वार्तालाप के लिए

नीचे दी गई क्वेरी में user_id = 2 . का विवरण मिलता है , आप संशोधित कर सकते हैं, users.id = 2 इसे किसी अन्य उपयोगकर्ता के लिए प्राप्त करने के लिए

SQLFiddle , आशा है कि यह आपके उद्देश्य को हल कर देगा

SELECT
    user_id, 
    users.name, 
    users2.name as sent_from_or_sent_to,
    subquery.text as latest_message_of_conversation
FROM
    users
    JOIN
    (
    SELECT
        text,
        row_number() OVER ( PARTITION BY user_id + recipient_id ORDER BY id DESC) AS row_num,
        user_id,
        recipient_id,
        id
    FROM
        private_messages
    GROUP BY
        id,
        recipient_id,
        user_id,
        text
    ) AS subquery ON ( ( subquery.user_id = users.id OR subquery.recipient_id = users.id)  AND row_num = 1 )
    JOIN users as users2 ON ( users2.id = CASE WHEN users.id = subquery.user_id THEN subquery.recipient_id ELSE subquery.user_id END )
WHERE
    users.id = 2
ORDER BY
    subquery.id DESC
LIMIT 10

जानकारी: क्वेरी को किसी भी अन्य उपयोगकर्ता के साथ हर बातचीत का नवीनतम संदेश मिलता है, यदि user_id 2 , user_id 3 . को एक संदेश भेजता है , वह भी प्रदर्शित होता है, क्योंकि यह वार्तालाप की शुरुआत को इंगित करता है। किसी अन्य उपयोगकर्ता के साथ हर बातचीत का नवीनतम संदेश प्रदर्शित होता है



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Docker और Flask के साथ PostgreSQL डेटाबेस का उपयोग करना, यह कैसे काम करता है?

  2. PostgreSQL 9.0 को Windows सेवा के रूप में पंजीकृत करें और चलाएं

  3. 1-आयामी सरणी के लिए सरणी सबस्क्रिप्ट को सामान्य करें ताकि वे 1 . से शुरू हों

  4. प्रदर्शन ट्यूनिंग:बूलियन कॉलम के लिए इंडेक्स बनाएं

  5. अगली कड़ी का चयन करें और एक अन्य तालिका उपनाम शामिल करें