首页新闻找找看学习计划

SQL多对多关系求简化

0
悬赏园豆:50 [已解决问题] 解决于 2009-06-10 22:18

求简化以下语句:
SELECT ContentID FROM d_Demo WHERE NodeID IN ('政务公开','招商引资') AND ContentID IN (SELECT ContentID FROM d_Demo WHERE NodeID IN ('A镇'))

说明:
某文章属于多个节点,要求查询某些节下所有的文章,同时这些文章还必须属于另一些节点。该功能用于分区分类,比如说有节点为"乡镇"下有"A镇,B镇",另有节点"文章"下有"新闻,政务公开,招商引资"。目的是要方便的查出所有乡镇的所有新闻,或者某乡镇的招商引资。

备注:
基于MSSQL2005;
有加分要求请直言。

问题补充: @小眼睛老鼠 首先表示感谢,但您没有理解我的问题。 请耐心仔细阅读我的SQL语句,以便您能更准确帮助我。 期待您的指导。
yexuan的主页 yexuan | 初学一级 | 园豆:32
提问于:2009-05-30 02:15
< >
分享
最佳答案
0

SELECT DISTINCT contentid FROM d_demo

WHERE contentid IN (SELECT contentid FROM d_demo WHERE nodeid IN ('招商引资'))

AND contentid IN (SELECT contentid FROM d_demo WHERE nodeid IN ('A镇'))

 

没有好法子的吧,这个表建得确实有问题,应该把nodeid分开建成两个字段才对

团子老爹 | 菜鸟二级 |园豆:295 | 2009-05-31 08:35
(SELECT contentid FROM d_demo WHERE nodeid IN ('招商引资') ) INTERSECT (SELECT contentid FROM d_demo WHERE nodeid IN ('A镇') )
yexuan | 园豆:32 (初学一级) | 2009-11-21 01:23
其他回答(2)
0

这个可能你要改表结构

在你无限分级的的节点表里面添加childsid(列出属于这个节点的所有子节点)

然后查询的时候直接通过这个字段查

具体做法可以参考。net版本的动易后台sitefactory

的pe_node表

小眼睛老鼠 | 园豆:2774 (老鸟四级) | 2009-05-30 19:02
0

 老兄

SELECT DISTINCT contentid FROM d_demo

WHERE contentid IN (SELECT contentid FROM d_demo WHERE nodeid IN ('招商引资'))

AND contentid IN (SELECT contentid FROM d_demo WHERE nodeid IN ('A镇'))

能查到结果吗?同一张表,nodeid既要是'招商引资'又要是'A镇'?

肯定是把'招商引资'和'A镇'等分类信息放到另外一张表的啦

 

 

 

莫慌 | 园豆:9 (初学一级) | 2009-05-31 09:07
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册