आप गणना दो अलग-अलग उपश्रेणियों के साथ कर सकते हैं:
select coalesce(qa2.subject, qa.subject) as question_subject,
qa.body,
( (select count(*)
from viewed_items vi
where qa.related = vi.question_id
) +
(select count(*)
from viewed_items vi
where qa.related is null and qa.id = vi.question_id
)
) as total_question_viewed
from questions_and_answers qa left join
questions_and_answers qa2
on qa.related = qa.id
where body like ':entry';
प्रत्येक सबक्वायरी के लिए इंडेक्स का उपयोग किया जा सकता है, इसलिए यह समग्र रूप से तेज़ होना चाहिए। वैसे, आपको NULL
. के बारे में चिंता करने की ज़रूरत नहीं है मान, क्योंकि COUNT(*)
एक सहसंबद्ध उपश्रेणी में हमेशा एक मान लौटाता है। अगर कुछ भी मेल नहीं खाता, तो मान 0
होगा ।