Anda perlu mengekspos tabel bersarang dalam klausa FROM menggunakan table()
fungsi. Anda kemudian dapat mereferensikan atribut koleksi:
SQL> select g.title
2 from game_table g
3 , table(g.gametheme) gt
4 where gt.theme = 'Action';
TITLE
--------------------------------------------------
Star Wars
SQL>
"bagaimana jika saya kemudian perlu mengambil baris dengan beberapa Tema yaitu Aksi, FPS?"
Maaf untuk solusi kikuk tapi saya harus pergi bekerja sekarang. Saya dapat memposting solusi yang lebih elegan nanti.
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>
Pendekatan alternatif ini tidak akan bekerja dengan tipe Anda saat ini karena VARRAY tidak mendukung member of
. Tapi itu akan berhasil jika koleksinya adalah Tabel Bersarang.
select g.title
from game_table g
where 'Action' member of g.gametheme
and 'FPS' member of g.gametheme