इसे आजमाएं:
select X.COUNTRYNAME, Y.STATENAME
from XMLTEMP
,xmltable('/countries/country'
passing MYDOC
columns COUNTRYNAME varchar2(20) path './name',
STATES xmltype path './states') X,
xmltable('/states/state/name' passing X.STATES
columns STATENAME varchar2(20) path '.') (+) Y
चूंकि आपके पास कई राज्य हैं, इसलिए आपको किसी अन्य xml तालिका में शामिल होना चाहिए। चूंकि कुछ देशों में कोई राज्य नहीं है, इसलिए इसे एक बाएं बाहरी जुड़ाव की आवश्यकता है। मैं (+)
. की पुरानी पद्धति का उपयोग कर रहा हूं जैसा कि मैं इसे 10g पर आजमा रहा हूं और ऐसा लगता है कि left outer join
का उपयोग करने में कोई समस्या है 10g में लेकिन जाहिरा तौर पर यह 11g
. में ठीक होना चाहिए ।