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

SQL सर्वर में Oracle के PRIOR द्वारा कनेक्ट का अनुकरण

पुनरावर्ती प्रश्नों को लागू करने का SQL मानक तरीका, जैसा कि लागू किया गया है उदा। IBM DB2 और SQL सर्वर द्वारा, WITH . है खंड। CONNECT BY . के अनुवाद के एक उदाहरण के लिए यह लेख देखें एक WITH . में (तकनीकी रूप से एक पुनरावर्ती सीटीई ) -- उदाहरण DB2 के लिए है लेकिन मेरा मानना ​​है कि यह SQL सर्वर पर भी काम करेगा।

संपादित करें:स्पष्ट रूप से मूल क्वेरेंट को एक विशिष्ट उदाहरण की आवश्यकता होती है, यहां आईबीएम साइट से एक है जिसका यूआरएल मैंने पहले ही दिया है। एक टेबल दिया गया:

CREATE TABLE emp(empid  INTEGER NOT NULL PRIMARY KEY,
                 name   VARCHAR(10),
                 salary DECIMAL(9, 2),
                 mgrid  INTEGER);

जहां mgrid किसी कर्मचारी के प्रबंधक के empid . का संदर्भ देता है , कार्य है, उन सभी के नाम प्राप्त करना जो प्रत्यक्ष या परोक्ष रूप से Joan . को रिपोर्ट करते हैं . Oracle में, यह एक आसान CONNECT है :

SELECT name 
  FROM emp
  START WITH name = 'Joan'
  CONNECT BY PRIOR empid = mgrid

SQL सर्वर, IBM DB2, या PostgreSQL 8.4 (साथ ही SQL मानक में, जो इसके लायक है;-) में, पूरी तरह से समकक्ष समाधान इसके बजाय एक पुनरावर्ती क्वेरी (अधिक जटिल सिंटैक्स, लेकिन, वास्तव में, और भी अधिक शक्ति और लचीलापन है) ):

WITH n(empid, name) AS 
   (SELECT empid, name 
    FROM emp
    WHERE name = 'Joan'
        UNION ALL
    SELECT nplus1.empid, nplus1.name 
    FROM emp as nplus1, n
    WHERE n.empid = nplus1.mgrid)
SELECT name FROM n

Oracle का START WITH क्लॉज पहला नेस्टेड बन जाता है SELECT , रिकर्सन का मूल मामला, UNION . होना चाहिए रिकर्सिव भाग के साथ एड जो सिर्फ एक और SELECT है ।

SQL सर्वर का विशिष्ट स्वाद WITH बेशक MSDN पर प्रलेखित है, जो इस कीवर्ड के उपयोग के लिए दिशानिर्देश और सीमाएं, साथ ही साथ कई उदाहरण भी देता है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL डेटाबेस त्रुटि को ठीक करने के लिए पूरी गाइड 5243

  2. एसक्यूएल सर्वर 2008 प्रबंधन स्टूडियो मेरी क्वेरी के सिंटैक्स की जांच नहीं कर रहा है

  3. SQL सर्वर प्रतीक्षा ईवेंट -2

  4. क्या मुझे varchar या int की प्राथमिक कुंजी वाली तालिका डिज़ाइन करनी चाहिए?

  5. jdbctemplate के माध्यम से एसक्यूएल डालने से पहचान