日期:2014-05-17  浏览次数:20681 次

求一条sql语句:用到统计函数和条件有点想不出来怎么写了。
我有一个用户表:
查询某个人用:用户信息表,有地区province_id字段
select*from   userinfo   where   user_id=78

这个是用户发言表
统计用户发言:
select   count(*)   from   userfa   where   user_id=78    

两张表用user_id连接.
我要实现的效果是:统计没个人的发言总数,没发言的也要显示出来,在用用户信息表中的province_id分类..

我自己写了条语句:
select   a.user_id,a.province_id,count(b.user_id)   as   num     from   VIEW_UserInfo   as   a   inner   join   quoted   as   b   on     a.user_id=b.q_usernameid   where   province_id=20   group     by   a.user_id,a.province_id

但现在问题是因为要显示发言为空的人   所以在聚合函数里面加个group   by   all   来现实不符合条件的纪录,但我又要用地区分类,这个有冲突啊。
因该怎么解决啊。

------解决方案--------------------
怎么最近很多人问SQL的问题呢?
还是SQL
Sql = "select info.ids,count(ily.ids) as counts from info left join ily on(info.ids=ily.ids) group by info.ids

info 为表1,ily 为表2
其他的我就不用说了吧
------解决方案--------------------
select count(*),user_id from userfa group by user_id

直接就把每个人的信息统计出来了。至于区域没有看懂要做什么。
------解决方案--------------------
and q_sortid is not null
------解决方案--------------------
我在解释下我的思路,用了 left 后:
select a.user_id,a.province_id,count(b.user_id) as num from VIEW_UserInfo as a left join quoted as b on a.user_id=b.q_usernameid where province_id=20 group by a.user_id,a.province_id

没问题,统计为0结果显示出来用VIEW_UserInfo字段里的查询也OK

但是我在用quoted 表中的字段做条件就出错了:就不在显示为0的结果拉。
我想是不是因为用了quoted里面的字段 所以把以left左表作为基准该成了右表做为基准了。

象这样的语句到底因该怎么写呢。
=====================================================
不是这个原因,你把修改后的贴出来