MySQL - Counting rows and left join problem -
मेरे पास 2 टेबल, अभियान और अभियान_कोड हैं:
अभियान: id, partner_id, status
अभियान_codes: आईडी, कोड, स्थिति
मुझे सभी अभियानों के लिए सभी अभियान_codes की गणना करना है, जहां अभियान_codes.status 0 के बराबर या अभियान के लिए कोई अभियान_कोड रिकॉर्ड नहीं हैं।
मेरे पास निम्न एसक्यूएल है, लेकिन ज़ाहिर है कि WHERE स्टेटमेंट उन अभियानों को हटा देता है जिनके प्रचार अभियान में कोई संबंधित रिकॉर्ड नहीं है (मैं उन अभियानों को शून्य अभियान_codes के साथ भी चाहता हूं)
SELECT c आईडी के रूप में अभियान_आईडी, COUNT (सीसीआईडी) एएस कोडकैब से अभियान सी LEFT JOIN campaign_codes सीसी cc.campaign_id = c.id WHERE c.partner_id = 4 और cc.status = 0 GROUP द्वारा c.id
मैं कुछ पसंद करता हूं:
SELECT c.id AS अभियान_आईडी, COUNT (सीसीआईडी) एएस कोडकैब से अभियान सी LEFT JOIN अभियानकोड सीसी पर cc.campaign_id = c.id और cc.status = 0 - इस खंड को WHERE में रखने से, प्रभावी रूप से यह एक अंतर्निहित ज्वाइन हो जाता है जहां c.partner_id = 4 ग्रुप द्वारा c.id
और
को जोड़ना खंड में स्थानांतरित करना सफल होने या असफल होने में महत्वपूर्ण रूप से ऐसी पंक्तियों को बनाए रखना है जहां 'दाएं' तालिका में कोई मिलान पंक्ति नहीं है।
यदि यह WHERE
में था, नल की तुलना (जहां कोई अभियान नहीं है) असफल हो जायेगी और परिणामों से समाप्त हो जाएगा।
Comments
Post a Comment