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>
「その後、アクション、FPSなどの複数のテーマを持つ行を取得する必要がある場合はどうなりますか?」
不格好な解決策についてお詫びしますが、私は今仕事に行く必要があります。後でもっとエレガントな解決策を投稿するかもしれません。
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