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

एकाधिक mysql तालिका स्तंभों का योग, घटाना और शामिल हों

चूंकि आपके पास प्रति ग्राहक कई लेन-देन, अन्य ऋण राशि और भुगतान हैं, इसलिए आप सीधे JOIN नहीं कर सकते हैं तालिकाओं को एक-दूसरे से जोड़ दें क्योंकि इससे पंक्तियों की प्रतिकृति बन जाएगी, जिसके परिणामस्वरूप गलत मान होंगे। इसके बजाय, हम SUM क्लाइंट के आधार पर प्रत्येक तालिका के भीतर सभी मान पहले JOIN . इसके अतिरिक्त, चूंकि कुछ क्लाइंट के पास प्रत्येक तालिका में प्रविष्टियां नहीं होती हैं, इसलिए आपको LEFT JOIN का उपयोग करना चाहिए s और COALESCE परिणामों पर ताकि खाली पंक्तियाँ SUM को NULL न बनने दें . यह प्रश्न आपको वांछित परिणाम देगा:

SELECT c.id, c.name,
       COALESCE(t.transactions, 0) + COALESCE(o.amounts, 0) - COALESCE(p.payments, 0) AS amount
FROM client c
LEFT JOIN (SELECT id, SUM(load_amount) + SUM(additional) AS transactions
           FROM transaction
           GROUP BY id) t on t.id = c.id
LEFT JOIN (SELECT id, SUM(amount) AS amounts
           FROM other_loan
           GROUP BY id) o ON o.id = c.id
LEFT JOIN (SELECT id, SUM(payment_amount) AS payments
           FROM payment
           GROUP BY id) p ON p.id = c.id
GROUP BY c.id

आउटपुट (आपके नमूना डेटा के लिए):

id  name        amount
1   Robin       8718
2   Cinderella  21
3   Leomar      0

SQLFiddle पर डेमो




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. /etc/mysql/my.cnf परिवर्तन के बाद MySQL कंटेनर क्रैश, वापस कैसे संपादित करें?

  2. सबसे हाल की टिप्पणी या अंतिम पोस्ट द्वारा MySQL आदेश पोस्ट

  3. बूँद और भंडारण की आवश्यकता

  4. Mysql में अभी () से अगले 7 दिनों तक के रिकॉर्ड दिखाएं

  5. लोकलहोस्ट पर मैसकल कनेक्शन ने मना कर दिया