业务需求:
查询,指定分类(包含子分类)下的所有不重复的内容(一条内容可能属于多个子分类)
表结构:
分类表 T_INFO_CLASS
名称 |
类型 |
可为空 |
默认 |
注释 |
ID |
NUMBER |
|
|
主键id |
NAME |
VARCHAR2(64) |
Y |
|
名称 |
PARENT_ID |
NUMBER |
Y |
|
父类id |
DESCRIPTION |
VARCHAR2(200) |
Y |
|
描述 |
SPELL |
VARCHAR2(10) |
Y |
|
缩写 |
中间表 t_info_class_relationship
名称 |
类型 |
可为空 |
默认 |
存储 |
注释 |
ID |
NUMBER(19) |
N |
|
|
主键id |
INFO_ID |
NUMBER(19) |
Y |
|
|
内容id |
CLASS_ID |
NUMBER(19) |
Y |
|
|
分类id |
内容表t_info
名称 |
类型 |
可为空 |
默认 |
存储 |
注释 |
ID |
NUMBER(19) |
N |
|
|
主键id |
TITLE |
VARCHAR2(255 CHAR) |
Y |
|
|
标题 |
SQL :
select count(*) from t_info t, t_info_class_relationship s /* 限制属于同一个分类下只显示一条记录*/ where t.id in (select min(info_id) from t_info_class_relationship group by info_id having count(*) > 0) /* 递归查询同一个分类下的所有子分类*/ and s.class_id in(select a.id from T_INFO_CLASS a start with a.parent_id=39902 connect by prior a.id =parent_id union select 39902 from dual) order by t.id DESC
|
注: 性能比较低,不知道该如何优化。。。。。。
阅读(1257) | 评论(1) | 转发(0) |