आपको अपनी क्वेरी को दोबारा सुधारना चाहिए। आप क्वेरी द्वारा डेटा एकत्र करने के तरीके को पुन:व्यवस्थित करके ऐसा कर सकते हैं। कैसे?
- पहले 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 में अनुक्रमित है
इसे आज़माएं !!!