create table art(
id int primary key ,
artname varchar(10),
isright varchar(2)
);
insert into art values(1,'A','N');
insert into art values(2,'A_1','Y');
insert into art values(3,'A_2','Y');
insert into art values(4,'B','Y');
insert into art values(5,'B_1','Y');
insert into art values(6,'B_2','Y');
insert into art values(7,'B_3','N');
insert into art values(8,'B_1_1','Y');
insert into art values(9,'B_1_2','N');
insert into art values(10,'B_3_1','Y');create table relations(
parentid int ,
childid int
);
insert into relations values(1,2);
insert into relations values(1,3);
insert into relations values(4,5);
insert into relations values(4,6);
insert into relations values(4,7);
insert into relations values(5,8);
insert into relations values(5,9);
insert into relations values(7,10);现在我要找出art表中isright='Y'的记录,但是有个条件是必须是他的父类中isright='Y'才行,
如 id =2 ,id=3 的记录虽然他满足条件但他的父类id=1(isright='N')不满足条件,所以id = 2 与 id = 3 不要,
也就是说在检索art表中数据时如果父类满足条件则检索该父类,同时再检索父类下面满足条件的子类,如果父类不满足条件则子类全部不检索,如果子类满足条件则检索子类,同时再检索子类下面满足条件的子子类,如果子类不满足条件则子子类也全部不检索,以此类推。
在本例中我最终要检索的记录的id为4,5,6,8这四条。
id int primary key ,
artname varchar(10),
isright varchar(2)
);
insert into art values(1,'A','N');
insert into art values(2,'A_1','Y');
insert into art values(3,'A_2','Y');
insert into art values(4,'B','Y');
insert into art values(5,'B_1','Y');
insert into art values(6,'B_2','Y');
insert into art values(7,'B_3','N');
insert into art values(8,'B_1_1','Y');
insert into art values(9,'B_1_2','N');
insert into art values(10,'B_3_1','Y');create table relations(
parentid int ,
childid int
);
insert into relations values(1,2);
insert into relations values(1,3);
insert into relations values(4,5);
insert into relations values(4,6);
insert into relations values(4,7);
insert into relations values(5,8);
insert into relations values(5,9);
insert into relations values(7,10);现在我要找出art表中isright='Y'的记录,但是有个条件是必须是他的父类中isright='Y'才行,
如 id =2 ,id=3 的记录虽然他满足条件但他的父类id=1(isright='N')不满足条件,所以id = 2 与 id = 3 不要,
也就是说在检索art表中数据时如果父类满足条件则检索该父类,同时再检索父类下面满足条件的子类,如果父类不满足条件则子类全部不检索,如果子类满足条件则检索子类,同时再检索子类下面满足条件的子子类,如果子类不满足条件则子子类也全部不检索,以此类推。
在本例中我最终要检索的记录的id为4,5,6,8这四条。
解决方案 »
- Net Configuration Assistant 无法打开,是怎么回事/
- 无意间删除了一个数据库实例的文件导致创建数据库提示数据库未打开
- procedure 的问题,编译通不过
- 在VS.NET中看不到ORACLE的表
- ORA-01043: user side memory corruption [], [], [], []
- 一个菜鸟的关于export的问题
- 请教 通讯通道问题
- oracle
- 高分:linux7.3下oracle8.1.7如何配置JDBC?
- 请教一个在8。0。5版本中用系统工具和手工方式建立数据库及相关对象的例子!
- ORACLE的TYPE
- 【求助】求多记录条件取值SQL写法?
from art t
where t.isright = 'Y'
and exists (select null
from art a, relations b
where a.isright = 'Y'
and a.id = b.parentid
and b.childid = t.id)
按你的描述,id=4没有父项,不应该符合查询条件