phpMyAdmin
 sql >> डेटाबेस >  >> Database Tools >> phpMyAdmin

SQL में संदेश सूची बनाना

मुझे लगता है कि आपकी क्वेरी "सही" परिणाम दे रही है, जैसे कि आप कुछ वार्तालापों में अंतिम संदेश देखना चाहते हैं, आपको वास्तव में conversation_id के आधार पर समूह बनाना चाहिए . हालांकि मुझे यह फ़ील्ड आपको स्कीमा में नहीं दिख रही है।

अगर आप WHERE sender_id = 3 GROUP BY receiver_id करते हैं , तो यह सही है, कि क्वेरी आपको संदेश 1 और 7 लौटाती है, 'क्योंकि वे संदेश भिन्न को भेजे गए थे लोग, इस प्रकार आपके डिज़ाइन में वे अलग-अलग वार्तालाप हैं।

यदि आप सामान्य रूप से आपके द्वारा भेजे गए अंतिम संदेश को ही देखना चाहते हैं, तो बस GROUP BY हटा दें आपके UNION . के दूसरे भाग में . अन्यथा, अपने स्कीमा को फिर से डिज़ाइन करने पर विचार करें।

संपादित करें:

इस क्वेरी को आजमाएं:

SELECT m.message_id, u.username, m.subject, m.message,
       m.status, UNIX_TIMESTAMP(m.date) as `date`
  FROM users u
  LEFT JOIN messages m ON m.sender_id = u.id
 WHERE m.message_id IN (
    SELECT max(message_id) 
      FROM messages
     WHERE receiver_id = 3 OR sender_id = 3
     GROUP BY least(sender_id,receiver_id), 
              greatest(sender_id,receiver_id)
    );

कुछ नोट:

  1. UNION अब इसकी आवश्यकता नहीं है;
  2. यह दृष्टिकोण 2 पक्षों के बीच सभी ई-मेल को एक ही वार्तालाप के रूप में मानेगा, जो हमेशा सत्य नहीं होता है। हो सकता है कि आप इस दृष्टिकोण को फिर से डिज़ाइन करना चाहें;
  3. आरक्षित शब्दों का उपयोग करना एक खराब शैली है (जैसे date ) कॉलम के नाम या उपनाम के लिए, इससे बचने का प्रयास करें। या यदि आप उनका उपयोग करते हैं तो बैकटिक्स का उपयोग करें।



  1. DBeaver
  2.   
  3. phpMyAdmin
  4.   
  5. Navicat
  6.   
  7. SSMS
  8.   
  9. MySQL Workbench
  10.   
  11. SQLyog
  1. त्रुटि MySQL ने कहा:दस्तावेज़ीकरण कनेक्ट नहीं हो सकता:अमान्य सेटिंग्स। [उबंटू]

  2. MAMP पर phpMyAdmin से कनेक्ट नहीं हो सकता

  3. phpMyAdmin मेरी यूनियन सभी क्वेरी के लिए क्या कर रहा है?

  4. लॉगिन के बाद phpmyadmin गलत रीडायरेक्ट के साथ Nginx

  5. PhpMyAdmin के साथ डेटाबेस और टेबल निर्यात करना