यहां एक क्वेरी है जो ऊपर दिए गए दो प्रश्नों को सरलता से जोड़ती है, इसलिए सुनिश्चित करें कि आप दो तरीकों से आउटपुट की जांच और तुलना करते हैं।
select
r.user_id, r.role_id, r.participant_code, max(status_id)
from
user_role r,
cmp_role c
where
r.role_id = c.role_id
and r.active in (0,1,3)
and r.participant_code is not null
and sysdate between r.effective_from_date and r.effective_to_date
and c.group_id = 3
group by
r.user_id, r.role_id, r.participant_code;
आवश्यक परिणाम प्राप्त करने के लिए अस्थायी तालिका का उपयोग करना और फिर बाद में रिकॉर्ड हटाना आवश्यक नहीं है। हालाँकि, इसके उपयोग का कोई कारण हो सकता है, शायद प्रदर्शन?
साथ ही, यह क्वेरी जैसा दिखता है और USER
. से जुड़ता है तालिका अनावश्यक है क्योंकि USER_ID
USER_ROLES
. से उपलब्ध है . मैंने इसे ऊपर की क्वेरी से हटा दिया है। उम्मीद है कि इससे आपको इसे सुधारने के लिए एक अच्छी शुरुआत मिलेगी।