Bạn cần hiển thị bảng lồng nhau trong mệnh đề FROM bằng cách sử dụng table()
hàm số. Sau đó, bạn có thể tham chiếu các thuộc tính của bộ sưu tập:
SQL> select g.title
2 from game_table g
3 , table(g.gametheme) gt
4 where gt.theme = 'Action';
TITLE
--------------------------------------------------
Star Wars
SQL>
"nếu sau đó tôi cần truy xuất các hàng có nhiều Chủ đề, tức là Hành động, FPS thì sao?"
Xin lỗi vì giải pháp lặt vặt nhưng tôi cần phải đi làm ngay. Tôi có thể đăng một giải pháp tốt hơn sau.
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>
Phương pháp thay thế này sẽ không hoạt động với loại hiện tại của bạn vì VARRAY không hỗ trợ thành viên member of
. Nhưng nó sẽ hoạt động nếu bộ sưu tập là một Bảng lồng nhau.
select g.title
from game_table g
where 'Action' member of g.gametheme
and 'FPS' member of g.gametheme