SQL多表关联求和问题

                                              SQL多表关联求和问题

      在很多时候我都要时进行多表的关联查寻,而多表关联的求和是常常用到的,但是也是有一点难度,今天

我把我几个案例展现出来,与大家一同分享,若有什么不对,请大家多多指出来,我一定马上更改。


第一个问题(图在最后面)

1). 某内容管理系统中,表message有如下字段
id 文章id
title 文章标题
content 文章内容
category_id 文章分类id
hits 点击量


2).同样上述内容管理系统:表comment记录用户回复内容,字段如下
comment_id 回复id
id 文章id,关联message表中的id

comment_content 回复内容

现通过查询数据库需要得到以下格式的文章标题列表,并按照回复数量排序,回复最高的排在最前面(由于数据表的问题,实现这个我是在数组中实现的)

文章id 文章标题 点击量 回复数量


实现SQL语句为:

$sql="select message.id as newsid,message.title as newstitle,message.hits as newshits,count(comment.id) as commentnums from message left join comment on message.id=comment.id GROUP BY comment.id";

这里一定要注意:1 求和时:count(comment.id),应是count,而不是SUM
                
                                 2  记住最后group by 这个条件,是不可少的。


第二个问题(关于营业额 图在最后面)

1). 系统中,有表店名表test3有如下字段
store_name 店名
sales      营业额


2).同样上述系统中:有表地区stations表字段如下
stations 地区
stroe_name 店名

现要求算出每个地区的一年总营业额来

实现SQL语句为:


$sql2="select stations.stations as '地区',sum(test3.sales) as '全年营业额' from stations left join test3 on stations.stroe_name=test3.store_name group by stations";


第三个问题(什么时候用HAVING,,,,什么时候用WHERE)

使用HAVING 的指令对SQL函数产生的值来设定条件(注意是不能使用where关键字,会报错)
当我们需要对SQL函数产生的结果进行条件选对时(不能使用WHERE),要用到它,HAVING 子句通常是在一个 SQL 句子的最后。一个含有 HAVING 子句的 SQL 并不一定要包含 GROUP BY 子句


总结:1 从上我们可以看出来:函数count()是对字段值出现的次数求和
               而函数SUM()是对字段本身的值进行求和的
       
             2  对于GROUP BY 分组求和时,一定要清楚我们对那个字段进行求和,分组的依据是什么。这些一定要想清楚。
       
        另外一般,GROUP BY都会出现在分组求和。

附图:

第一个问题的两个表(文章表):

 

第二个问题的两个表

 

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值