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

क्या मैं जुड़ने को गलत समझता हूँ?

आप #1 के अपने विवरण पर सही हैं... आपकी क्वेरी के साथ समस्या चरण #2 पर है।

जब आप left join राज्य से (परिवार और प्रजाति) तक, आप हर राज्य का अनुरोध कर रहे हैं, भले ही कोई मेल न हो (परिवार और प्रजाति)... हालाँकि, यह आपको कोई भी (परिवार और प्रजाति) संयोजन नहीं लौटाएगा जिसमें मैचिंग किंगडम।

एक करीबी प्रश्न होगा:

select *
    from reino r
         full join (
             familia f             
             right join especie e
                 on f.fnombre = e.efamilia
                 and f.freino = e.ereino
         ) on r.rnombre = f.freino 
           and r.rnombre = e.ereino;

ध्यान दें कि left join एक full join . के साथ बदल दिया गया था ...

<स्ट्राइक>हालाँकि, यह केवल उन परिवारों को लौटाता है जो एक प्रजाति से जुड़े होते हैं... यह किसी भी ऐसे परिवार को नहीं लौटाता जो राज्यों से जुड़े हों लेकिन प्रजाति से नहीं।

अपने प्रश्न को दोबारा पढ़ने के बाद, वास्तव में यह वही है जो आप चाहते थे...

संपादित करें:आगे के विचार पर, आप अपनी क्वेरी को इस प्रकार फिर से लिख सकते हैं:

select *
from 
    especie e
    left join familia f 
        on f.fnombre = e.efamilia
        and f.freino = e.ereino
    full join reino r
        on r.rnombre = f.freino 
        and r.rnombre = e.ereino;

मुझे लगता है कि यह बेहतर होगा, क्योंकि आप RIGHT JOIN को खत्म कर देते हैं , जो आमतौर पर खराब शैली... और कोष्ठक होने के कारण नाराज़ हो जाते हैं, जिसका परिणाम क्या होगा, यह निर्धारित करने के लिए लोगों के लिए सही ढंग से विश्लेषण करना मुश्किल हो सकता है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle डेटाबेस में अनुमत कनेक्शन की अधिकतम संख्या की जाँच कैसे करें?

  2. क्वेरी पैरामीटर के रूप में बाध्यकारी int64 (SQL_BIGINT) Oracle 10g ODBC में निष्पादन के दौरान त्रुटि का कारण बनता है

  3. TNS-12505:TNS:श्रोता को वर्तमान में कनेक्ट डिस्क्रिप्टर में दिए गए SID के बारे में पता नहीं है

  4. पृष्ठभूमि प्रक्रियाएं

  5. एसक्यूएल क्वेरी में अवधि के योग की गणना करें