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

MySQL COUNT कई लेफ्ट जॉइन - ऑप्टोमाइजेशन

आपको अपनी क्वेरी को दोबारा सुधारना चाहिए। आप क्वेरी द्वारा डेटा एकत्र करने के तरीके को पुन:व्यवस्थित करके ऐसा कर सकते हैं। कैसे?

  • पहले WHERE क्लॉज लागू करें
  • जॉइन अंतिम रूप से लागू करें

यहां आपकी मूल क्वेरी है:

SELECT t1.num1,t2.num2,t3.num3 
FROM member m 
LEFT JOIN 
( 
   SELECT member_id,COUNT(*) as num1 
   FROM table1 
   GROUP BY member_id 
) t1 ON t1.member_id = m.member_id 
LEFT JOIN 
( 
   SELECT member_id,COUNT(*) as num2 
   FROM table2 
   GROUP BY member_id 
) t2 ON t2.member_id = m.member_id 
LEFT JOIN 
( 
   SELECT member_id,COUNT(*) as num3 
   FROM table3 
   GROUP BY member_id 
) t3 ON t3.member_id = m.member_id 
WHERE m.member_id = 27 

ये रही आपकी नई क्वेरी

SELECT
   IFNULL(t1.num1,0) num1,
   IFNULL(t1.num2,0) num2,
   IFNULL(t1.num3,0) num3
FROM
(
   SELECT * FROM member m 
   WHERE member_id = 27
) 
LEFT JOIN 
( 
   SELECT member_id,COUNT(*) as num1 
   FROM table1 
   WHERE member_id = 27
   GROUP BY member_id 
) t1 ON t1.member_id = m.member_id 
LEFT JOIN 
( 
   SELECT member_id,COUNT(*) as num2 
   FROM table2 
   WHERE member_id = 27
   GROUP BY member_id 
) t2 ON t2.member_id = m.member_id 
LEFT JOIN 
( 
   SELECT member_id,COUNT(*) as num3 
   FROM table3 
   WHERE member_id = 27
   GROUP BY member_id 
) t3 ON t3.member_id = m.member_id 
;

BTW मैंने member m changed को बदल दिया में SELECT * FROM member m WHERE member_id = 27 यदि आपको सदस्य 27 के बारे में कोई जानकारी चाहिए। मैंने IFNULL भी जोड़ा गिनती शून्य होने की स्थिति में 0 उत्पन्न करने के लिए प्रत्येक परिणाम के लिए कार्य करता है।

आपको पूरी तरह सुनिश्चित करने की आवश्यकता है

  • सदस्य_आईडी सदस्य तालिका की प्राथमिक कुंजी है
  • सदस्य_आईडी तालिका1, तालिका2, और तालिका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. सीक्वेलाइज़ के साथ MySQL:ER_BAD_DB_ERROR:अज्ञात डेटाबेस

  2. मावेन - java.lang.ClassNotFoundException:com.mysql.jdbc.Driver

  3. मुझे GUID को MySQL तालिकाओं में कैसे संग्रहीत करना चाहिए?

  4. create_at . द्वारा समूहीकृत पंक्तियों का चयन नहीं कर सकता

  5. तिथि के अनुसार समूह, पुष्टि, लंबित