आप #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
को खत्म कर देते हैं , जो आमतौर पर खराब शैली... और कोष्ठक होने के कारण नाराज़ हो जाते हैं, जिसका परिणाम क्या होगा, यह निर्धारित करने के लिए लोगों के लिए सही ढंग से विश्लेषण करना मुश्किल हो सकता है।