आपको table()
. का उपयोग करके FROM क्लॉज में नेस्टेड टेबल को एक्सपोज करना होगा समारोह। फिर आप संग्रह की विशेषताओं को संदर्भित कर सकते हैं:
SQL> select g.title
2 from game_table g
3 , table(g.gametheme) gt
4 where gt.theme = 'Action';
TITLE
--------------------------------------------------
Star Wars
SQL>
<ब्लॉककोट> "क्या होगा अगर मुझे कई थीम्स यानी एक्शन, एफपीएस के साथ पंक्तियों को पुनः प्राप्त करने की आवश्यकता है?"
भद्दे समाधान के लिए क्षमा याचना लेकिन मुझे अभी काम पर जाने की जरूरत है। मैं बाद में एक और शानदार समाधान पोस्ट कर सकता हूं।
SQL> select * from game_table
2 /
TITLE
--------------------------------------------------
GAMETHEME(THEME)
--------------------------------------------------------------------------------
Star Wars
THEME_TYPE(THEME_GAME('Action'), THEME_GAME('FPS'))
Uncharted 3
THEME_TYPE(THEME_GAME('Action'), THEME_GAME('Puzzle'))
Commander Cody
THEME_TYPE(THEME_GAME('Fun'), THEME_GAME('Puzzle'))
SQL> select g.title
2 from game_table g
3 , table(g.gametheme) gt
4 , table(g.gametheme) gt1
5 where gt.theme = 'Action'
6 and gt1.theme = 'FPS' ;
TITLE
--------------------------------------------------
Star Wars
SQL>
यह वैकल्पिक तरीका आपके वर्तमान प्रकार के साथ काम नहीं करेगा क्योंकि VARRAY member of
. का समर्थन नहीं करता है . लेकिन अगर संग्रह नेस्टेड टेबल होता तो यह काम करता।
select g.title
from game_table g
where 'Action' member of g.gametheme
and 'FPS' member of g.gametheme