表结构:
Article{id=主键,content=文章内容,update=时间,is_doc=是否为公文,author=作者}, is_doc=1则为公文通告,is_doc=0则为一般文章.Comment{id=主键,atk_id=外键->文章主键,content=评论内容,update=时间,author=作者}文章和评论的关系是1对多,一篇文章有多个评论
Article:Comment= 1:n
现在要根据条件查找文章,select * from Article1,但是如果是公文is_doc=1,只找出没有评论Comment的Article,如果有评论的,则不显示在结果集里面.
2,如果is_doc=0,则都显示在结果集里面.select * from Article atk
where
if(is_doc=1&&[select count(1) as CNT from Comment cmt where cmt.atk_id = atk.id]==0 ){显示}
if(is_doc=1&&[select count(1) as CNT from Comment cmt where cmt.atk_id = atk.id]>0 ){不显示}
if(is_doc=0){显示}上面的if条件取并集.
不知道各位能否理解需求...
谢谢各位大虾...小弟只会简单的sql.这个需求有点古怪,没想出来...怎么处理?
谢谢各位
Article{id=主键,content=文章内容,update=时间,is_doc=是否为公文,author=作者}, is_doc=1则为公文通告,is_doc=0则为一般文章.Comment{id=主键,atk_id=外键->文章主键,content=评论内容,update=时间,author=作者}文章和评论的关系是1对多,一篇文章有多个评论
Article:Comment= 1:n
现在要根据条件查找文章,select * from Article1,但是如果是公文is_doc=1,只找出没有评论Comment的Article,如果有评论的,则不显示在结果集里面.
2,如果is_doc=0,则都显示在结果集里面.select * from Article atk
where
if(is_doc=1&&[select count(1) as CNT from Comment cmt where cmt.atk_id = atk.id]==0 ){显示}
if(is_doc=1&&[select count(1) as CNT from Comment cmt where cmt.atk_id = atk.id]>0 ){不显示}
if(is_doc=0){显示}上面的if条件取并集.
不知道各位能否理解需求...
谢谢各位大虾...小弟只会简单的sql.这个需求有点古怪,没想出来...怎么处理?
谢谢各位
select * from Article atk
where
(is_doc=1 and not exists (select 1 from Comment cmt where cmt.atk_id = atk.id))
or is_doc=0
SELECT T1.*
FROM ARTICLE T1
WHERE T1.IS_DOC = 1
AND NOT EXISTS (SELECT 1 FROM COMMENT T2 WHERE T1.ID = T2.ATK_ID)
UNION ALL
SELECT T1.*
FROM ARTICLE T1, COMMENT T2
WHERE T1.IS_DOC = 0
AND T1.ID = T2.ATK_ID;