当前位置: 代码迷 >> Oracle认证考试 >> 求一sql语句,感激不尽!解决方法
  详细解决方案

求一sql语句,感激不尽!解决方法

热度:7097   发布时间:2013-02-26 00:00:00.0
求一sql语句,感激不尽!
我在做一个文章发布系统:涉及到3张表

栏目表(lanmu):栏目id(lanmuid),栏目名称(lanmumingcheng)
文章表(wenzhang):文章id(wenzhangid),栏目id(lanmuid),文章标题(wenzhangbiaoti)
评论表(pinglun):评论id(pinglunid),文章id(wenzhangid),评论内容(pinglunneirong)


表与表之间的关系是这样的: 

一个文章属于某个栏目下的(也就是说栏目下有很多文章),栏目和文章是一对多的关系。评论表和文章表是多对已的,也就是说某个文章的评论可能有多条。尽管他们之间存在这种关系,但是并没有建立约束。

我现在想做如下查询:


文章标题 所属栏目 评论数量 


其中,所属栏目如果删除以后,那么文章标题还是要在列表中显示的。

那么这条sql该怎么写?
谢谢大家!






------解决方案--------------------------------------------------------
select a.wenzhangbiaoti 文章标题,b.lanmumingcheng 所属栏目,count(c.pinglunid) 评论数量
from 文章表 a
left join 栏目表 b on a.lanmuid=lanmuid
left join 评论表 c on b.wenzhangid=c.wenzhangid
group by a.wenzhangbiaoti ,b.lanmumingcheng 

------解决方案--------------------------------------------------------
[code=SQL]SELECT WZ.WENZHANGBIAOTI, LM.LANMUMINGCHENG, COUNT(PL.PINGLUNID) SL
FROM WENZHANG WZ
LEFT JOIN LANMU LM ON WZ.LANMUID = LM.LANMUID
LEFT JOIN PINGLUN PL ON WZ.WENZHANGID = PL.WENZHANGID
GROUP BY WZ.WENZHANGBIAOTI, LM.LANMUMINGCHENG
[/code]


------解决方案--------------------------------------------------------
SQL code
SELECT   WZ.WENZHANGBIAOTI,   LM.LANMUMINGCHENG,   COUNT(PL.PINGLUNID)   SL                         FROM   WENZHANG   WZ                         LEFT   JOIN   LANMU   LM   ON   WZ.LANMUID   =   LM.LANMUID                         LEFT   JOIN   PINGLUN   PL   ON   WZ.WENZHANGID   =   PL.WENZHANGID                         GROUP   BY   WZ.WENZHANGBIAOTI,   LM.LANMUMINGCHENG
------解决方案--------------------------------------------------------
探讨
select a.wenzhangbiaoti 文章标题,b.lanmumingcheng 所属栏目,count(c.pinglunid) 评论数量
from 文章表 a
left join 栏目表 b on a.lanmuid=lanmuid
left join 评论表 c on b.wenzhangid=c.wenzhangid
group by a.wenzhangbiaoti ,b.lanmumingcheng
  相关解决方案