"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > SQL सर्वर में उत्पादों से मिलान करने के लिए पुनरावर्ती क्वेरी समूह का उपयोग कैसे करें?

SQL सर्वर में उत्पादों से मिलान करने के लिए पुनरावर्ती क्वेरी समूह का उपयोग कैसे करें?

2025-04-19 को पोस्ट किया गया
ब्राउज़ करें:296

] लक्ष्य एक "समूह" तालिका बनाना है जो इन मैचों को एक पदानुक्रमित संरचना में कैप्चर करता है। विशेष रूप से, "Group_id" कॉलम को उन लोगों के बीच न्यूनतम उत्पाद आईडी को संग्रहीत करना चाहिए जो एक ही समूह से संबंधित हैं।

How to Group Matched Products in SQL Server Using Recursive Queries?
इसे पूरा करने के लिए, हम SQL में पुनरावर्ती प्रश्नों की शक्ति का लाभ उठा सकते हैं। एक पुनरावर्ती क्वेरी एक ही डेटा पर कई राउंड ऑपरेशन करता है। यहाँ एक समाधान है जो पुनरावर्ती संचालन को ट्रैक करने के लिए एक सामान्य तालिका अभिव्यक्ति (CTE) को नियोजित करता है:

CTE के साथ जैसा ( अलग का चयन करें M1.product_id as group_id, M1.product_id मैच एम 1 से लेफ्ट जॉइन मैच M2 M1.product_id = m2.matching_product_id पर जहां m2.matching_product_id शून्य है सभी को मिलाना चुनना C.group_id, M.MATCHING_PRODUCT_ID Cte c से मैचों में शामिल हों C.product_id = m.product_id पर ) Group_id द्वारा CTE ऑर्डर से * का चयन करें, पुनरावृत्ति का आधार मामला तब होता है जब किसी उत्पाद का कोई मैच नहीं होता है, जिस स्थिति में वह अपना समूह बनाता है। यह cte के पहले भाग में कैप्चर किया गया है।

अलग -अलग M1.product_id as group_id, M1.product_id मैच एम 1 से लेफ्ट जॉइन मैच M2 M1.product_id = m2.matching_product_id पर जहां m2.matching_product_id शून्य है

CTE का पुनरावर्ती भाग प्रत्येक समूह के लिए सभी मिलान उत्पादों को पाता है। यह इन मिलान उत्पादों को समूह में जोड़ता है।

WITH CTE
AS
(
    SELECT DISTINCT
        M1.Product_ID AS Group_ID,
        M1.Product_ID
    FROM matches M1
        LEFT JOIN matches M2
            ON M1.Product_Id = M2.matching_Product_Id
    WHERE M2.matching_Product_Id IS NULL
    UNION ALL
    SELECT
        C.Group_ID,
        M.matching_Product_Id
    FROM CTE C
        JOIN matches M
            ON C.Product_ID = M.Product_ID
)
SELECT * FROM CTE ORDER BY Group_ID

पर, अंत में, हम "group_id" कॉलम द्वारा CTE को छांटकर पदानुक्रमित क्रम में परिणाम प्राप्त कर सकते हैं। पदानुक्रमित संबंध को "Group_id" कॉलम द्वारा कैप्चर किया जाता है, यह सुनिश्चित करते हुए कि प्रत्येक पंक्ति एक अलग उत्पाद समूह को दर्शाती है।

    SELECT DISTINCT
        M1.Product_ID AS Group_ID,
        M1.Product_ID
    FROM matches M1
        LEFT JOIN matches M2
            ON M1.Product_Id = M2.matching_Product_Id
    WHERE M2.matching_Product_Id IS NULL
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3