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

SQL नेस्टेड सबक्वेरी संदर्भ दादा-दादी कॉलम

Oracle SQL में यह एक सीमा है:आप 1 स्तर से अधिक गहरे सबक्वेरी से पैरेंट क्वेरी तत्व का संदर्भ नहीं दे सकते।

मैं ऐसे मामले में एक फ़ंक्शन का उपयोग करूंगा:

CREATE OR REPLACE FUNCTION get_title(p_position_id NUMBER) RETURN VARCHAR2 IS
   l_result       LONG;
   l_position_num NUMBER := 0;
BEGIN
   FOR cc IN (SELECT position_title
                FROM position_table
               WHERE position_table.position_id = p_position_id
                 AND rownum <= 3) LOOP
      l_result       := cc.position_title || ',';
      l_position_num := l_position_num + 1;
   END LOOP;
   RETURN l_result || rpad(',', 3 - l_position_num, ',');
END;

आपकी क्वेरी कुछ इस तरह दिखेगी:

select
  name,
  phone,
  address,
  get_title(p.position_id) title
from person_view p



  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. क्रॉन और SQLPLUS

  4. ऑरैकल में सीमांकित स्ट्रिंग को पंक्तियों में बदलें

  5. PHP oci_connect () टीएनएस:कनेक्ट पहचानकर्ता को हल नहीं कर सका (ओआरए-12154)