Chinaunix首页 | 论坛 | 博客
  • 博客访问: 328396
  • 博文数量: 47
  • 博客积分: 2667
  • 博客等级: 少校
  • 技术积分: 480
  • 用 户 组: 普通用户
  • 注册时间: 2010-02-10 11:25
文章分类

全部博文(47)

文章存档

2015年(2)

2012年(4)

2011年(4)

2010年(37)

我的朋友

分类: Oracle

2010-06-23 11:11:01

业务需求:
    查询,指定分类(包含子分类)下的所有不重复的内容(一条内容可能属于多个子分类)
 
表结构:
 
分类表 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

 

注: 性能比较低,不知道该如何优化。。。。。。

阅读(1223) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-07-12 17:35:34

好东西 收藏先 数据恢复 http://www.hddhome.com