新闻表与新闻分类表为N:N的关系,在新闻发布的时候如何选择多个栏目,栏目ID通过逗号分隔,保存在新闻表的CatID字段中,这样就会造成二个表之间的关联不方便,但是前人代码是这样的,只好在此基础上进行修改:
现在需要根据CatID字段中字段信息,将一条数据分成多条数据(N>=1)
select a.ID,
a.NewsType,
a.templet,
b.classid,
a.datalib,
a.SavePath,
a.FileName,
a.FileEXName,
a.NewsID,
a.CheckStat
from BUSI_NEWS a, BUSI_NEWS_CLASS b
where a.newsid = '257166335141'
and b.classid in
(select NVL(REGEXP_SUBSTR(CLASSID, '[^,]+', 1, LEVEL, 'i'), 'NULLL') AS CLASSID
from (select a.ID,
a.NewsType,
a.templet,
a.classid,
a.datalib,
a.SavePath,
a.FileName,
a.FileEXName,
a.NewsID,
a.CheckStat
from BUSI_NEWS a
where a.newsid = '257166335141')
CONNECT BY LEVEL <= LENGTH(CLASSID) -
LENGTH(REGEXP_REPLACE(CLASSID, ',', '')) + 1)
- 在数据库开发过程中会有一个通用的函数可以解决开发过程原本很复杂的写法,需要多了解一些系统函数
- 像这样的数据库设计,是保存二条数据,还是保存一条数据?