请问一个mysql的分组查询有关问题

请教一个mysql的分组查询问题?

一个论坛,有两个表

posts   这是用户发贴表

id,forum_id,title,content,postat

forum   这是版面表

id,name,man

现在要用一个查询来得到某一时段内的各版面发贴排名:

select   f.id,f.name,count(p.id)   as   posts_num  

from   posts   p   left   join   forum   f   on   p.forum_id=f.id

where   p.postat= ‘20070801 ‘

group   by   f.id  

order   by   posts_num   desc

这时得到结果:

id             name                   posts_num

1 谈天说地       34

3 衣食住行       31

2 互通有无       26

9 收藏天地       11

5 游山玩水       9

但问题目是,论坛里还有三个版块,但当日没有发贴,即在posts表中当日没有记录,则这个查询就没有将其包含进来.

我的需求是,按照上面的查询时,同时也能将没有贴子的版块[count(p.id)为0]也一并查询出来.

查了一些资料,将上面的left   join   改成right   join,left   outer   join,但都不管用!

哪位能够帮帮我?谢谢!




那你就先查forum表

select * from forum left join (select id,name,count(id) from posts) as t on forum…..




你可以用版块表做为主表进行左连接,这样就行了。




用union合并两个结果集,参考一下

select * from(select forum.id, forum.name,report.total from forum, report

where forum.id=report.id

order by total desc)as A

union all

select * from (select forum.id, forum.name,0 from forum

where forum.id not in(select id from report)

)as B

请问一个mysql的分组查询有关问题

相关文章:

你感兴趣的文章:

标签云: