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

एकाधिक तालिकाओं पर मैसकल COUNT(*)

उप-चयनों का उपयोग करके आप यह कर सकते हैं:

SELECT co.*, 
    (SELECT COUNT(*) FROM modules mod WHERE mod.course_id=co.id) AS moduleCount, 
    (SELECT COUNT(*) FROM videos vid WHERE vid.course_id=co.id) AS vidCount
FROM courses AS co
ORDER BY co.id DESC

लेकिन सावधान रहें क्योंकि जब पाठ्यक्रमों में कई पंक्तियाँ हों तो यह एक महंगी क्वेरी है।

संपादित करें: यदि आपकी तालिकाएँ काफी बड़ी हैं, तो निम्न क्वेरी को बेहतर प्रदर्शन करना चाहिए (पढ़ने और समझने में अधिक जटिल होने के पक्ष में)।

SELECT co.*, 
    COALESCE(mod.moduleCount,0) AS moduleCount,
    COALESCE(vid.vidCount,0) AS vidCount
FROM courses AS co
    LEFT JOIN (
            SELECT COUNT(*) AS moduleCount, course_id AS courseId 
            FROM modules
            GROUP BY course_id
        ) AS mod
        ON mod.courseId = co.id
    LEFT JOIN (
            SELECT COUNT(*) AS vidCount, course_id AS courseId 
            FROM videos
            GROUP BY course_id
        ) AS vid
        ON vid.courseId = co.id
ORDER BY co.id DESC


  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 में एक डेटाबेस का चयन करना

  2. mysql - किसी अन्य अनुक्रमणिका के साथ पूर्ण टेक्स्ट खोज में सहायता करने का कोई तरीका?

  3. लुकअप टेबल कितने महत्वपूर्ण हैं?

  4. MySQL my.cnf फ़ाइल - बिना पूर्ववर्ती समूह के विकल्प मिला

  5. `mysqli_real_escape_string` . के प्रभाव को उलटना