求简化以下语句:
SELECT ContentID FROM d_Demo WHERE NodeID IN ('政务公开','招商引资') AND ContentID IN (SELECT ContentID FROM d_Demo WHERE NodeID IN ('A镇'))
说明:
某文章属于多个节点,要求查询某些节下所有的文章,同时这些文章还必须属于另一些节点。该功能用于分区分类,比如说有节点为"乡镇"下有"A镇,B镇",另有节点"文章"下有"新闻,政务公开,招商引资"。目的是要方便的查出所有乡镇的所有新闻,或者某乡镇的招商引资。
备注:
基于MSSQL2005;
有加分要求请直言。
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分开建成两个字段才对
这个可能你要改表结构
在你无限分级的的节点表里面添加childsid(列出属于这个节点的所有子节点)
然后查询的时候直接通过这个字段查
具体做法可以参考。net版本的动易后台sitefactory
的pe_node表
老兄
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镇'等分类信息放到另外一张表的啦