Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

सीटीई के साथ रिकर्सिव क्वेरी - किसी दिए गए माता-पिता के लिए चाइल्ड कॉलम का योग

आप ठीक कर रहे हैं - आप काफी करीब हैं :-)

मूल रूप से, आपको यह करना होगा:

  • सीटीई से पहले चुने जाने वाले प्रारंभिक फ़ोरम को परिभाषित करें
  • निर्धारित फ़ोरम के लिए "एंकर" क्वेरी बनाएं
  • फिर सभी बच्चों पर पुनरावृति करें और TopicCount . का योग करें और ReplyCount काउंटर

तो आपका कोड कुछ इस तरह दिखना चाहिए:

DECLARE @RootForumID INT
SET @RootForumID = 1  -- or whatever you want...

;WITH CTE AS
(
   -- define the "anchor" query - select the chosen forum
   SELECT 
       ForumID, TopicCount, ReplyCount, LastPost
   FROM 
       dbo.forums
   WHERE
       ForumID = @RootForumID

   UNION ALL

   -- select the child rows
   SELECT 
       f.ForumID, f.TopicCount, f.ReplyCount, f.LastPost
   FROM 
       dbo.forums f
   INNER JOIN
       CTE on f.ParentForumID = CTE.ForumID
)
SELECT 
    SUM(TopicCount) AS topics, 
    SUM(ReplyCount) AS replys,
    MAX(LastPost) AS 'Latest Post' 
FROM 
    CTE

बेशक, आप इसे एक संग्रहित प्रक्रिया में लपेट सकते हैं जो प्रारंभिक "रूट" ForumID लेगी एक पैरामीटर के रूप में।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. सभी डेटाबेस में एक कॉलम नाम खोजें

  2. अलग-अलग डेटा के साथ दो समान तालिका संरचनाओं में शामिल हों

  3. मैं डीएसएन-रहित कनेक्शन का उपयोग करके एक्सेस में पासथ्रू क्वेरी कैसे बना सकता हूं?

  4. T-SQL का उपयोग करके SQL सर्वर एजेंट जॉब कैसे चलाएं

  5. उद्धरण चिह्नों के साथ पैरामीटर कैसे पास करें