SQL多表(SQL三表关联SQL)关联求和问题

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

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


第一个问题(图在最后面,在BAIDU中我搞了好久都没有把图放在这个位置上来)

1). 某内容管理系统中,表message有如下字段
id 文章id
title 文章标题
content 文章内容
category_id 文章分类id phperz~com
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 这个条件,是不可少的。


第二个问题(关于营业额 图在最后面,在BAIDU中我搞了好久都没有把图放在这个位置上来)

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 子句

(另注:至今我写的(SQL三表关联SQL)最长的一个SQL语句如下:)

$sql="
    select dev_privilege.id,dev_privilege.name,dev_role_privilege.value from dev_privilege join dev_role_privilege on
    dev_privilege.id = dev_role_privilege.privilege_id join dev_role on dev_role.id = dev_role_privilege.role_id
    where dev_role.name = '".$value['name']."'
";

(这涉及到三表(SQL三表关联SQL)关联,条件中再套条件)


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

附图:

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

SQL多表(SQL三表关联SQL)关联求和问题_第1张图片

SQL多表(SQL三表关联SQL)关联求和问题_第2张图片

第二个问题的两个表

SQL多表(SQL三表关联SQL)关联求和问题_第3张图片

SQL多表(SQL三表关联SQL)关联求和问题_第4张图片


原文地址:http://hi.baidu.com/fc_lamp/blog/item/f95fbb23ca790ead4623e8ec.html

1bc251d79b744a0907088b1a.jpg

95676f39b15d9be4d562251b.jpg

bd41fe39df3d3d02b8998fe4.jpg

df71dad6812f43fba144df1a.jpg

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/16436858/viewspace-618267/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/16436858/viewspace-618267/

你可能感兴趣的:(SQL多表(SQL三表关联SQL)关联求和问题)