求一条古怪的sql.

meadking 2011-11-01 11:45:27
表结构:
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 Article

1,但是如果是公文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.这个需求有点古怪,没想出来...怎么处理?
谢谢各位
...全文
135 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
hudingchen 2011-11-01
  • 打赏
  • 举报
回复
没看太明白,给出表的数据和想要的结果吧,能清晰点。
funfenffun 2011-11-01
  • 打赏
  • 举报
回复

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
BenChiM888 2011-11-01
  • 打赏
  • 举报
回复

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;

17,140

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧