业务需求:
查询,指定分类(包含子分类)下的所有不重复的内容(一条内容可能属于多个子分类)
表结构:
分类表 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
|
注: 性能比较低,不知道该如何优化。。。。。。
阅读(1286) | 评论(1) | 转发(0) |