如何解决这个问题?
我有一个表A,B,C
和C
表B
(a1,c1)
(a1,c4)
(a1,c3)
(a2,c1)
(a2,c3)
(a2,c4)
(a3,c1)
(a3,c4)
(a4,c1)
(a4,c4)
(a4,c3)
(a4,c5)
示例:
我使用c1,c3,c4
查看C.结果应为:a1,a2,a4
或者:
查看C:c1,c5
结果应为:a4
我希望表B中的所有元素(aX)都包含视图C中的所有元素。
答案 0 :(得分:1)
你可以这样做:
create table temp_a (
a_rec varchar2(2)
);
create table temp_b (
a_rec varchar2(2),
c_rec varchar2(2)
);
create table temp_c (
c_rec varchar2(2)
);
insert into temp_a values ('a1');
insert into temp_a values ('a2');
insert into temp_a values ('a3');
insert into temp_a values ('a4');
insert into temp_c values ('c1');
insert into temp_c values ('c3');
insert into temp_c values ('c4');
insert into temp_b values ('a1','c1');
insert into temp_b values ('a1','c4');
insert into temp_b values ('a1','c3');
insert into temp_b values ('a2','c1');
insert into temp_b values ('a2','c3');
insert into temp_b values ('a2','c4');
insert into temp_b values ('a3','c1');
insert into temp_b values ('a3','c4');
insert into temp_b values ('a4','c1');
insert into temp_b values ('a4','c4');
insert into temp_b values ('a4','c3');
insert into temp_b values ('a4','c5');
select b.a_rec
from temp_b b
join temp_c c on c.c_rec = b.c_rec
group by a_rec
having count(*) >= (select count(c_rec) from temp_c);
请注意,如果您使用c1,c3,c4查看C,那么结果实际上是:a1,a2,a4(因为a1也符合条件)。