thinkphp mysql语句 sum

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了thinkphp mysql语句 sum相关的知识,希望对你有一定的参考价值。

$s = M('money')->where($where)->sum('get') + 0;
这句sql语句怎么解释?搜索出信息求和后 为什么有个+0 怎么解释语句?

参考技术A 你的问题有N多问题,说说我的建议,
通常,假如一张表纪录包子米饭的销售纪录
ID 售出类型 售出数量 售出时间
id type num time
1 baozi 10 2013.08.01 15:30
2 mifan 21 2013.08.01 11:30
查米饭今天的销售纪录 就
select sum(num) from table where type = 'mifan' and time > 2013.08.01 00:00:00 and time < 2013.08.01 23:59:59
当然这里的时间比较只是比较直观点的,具体比较时肯定用时间戳格式的,,,,
简单明了,

然后回到你的问题,
你已经查询出了1.1号的包子销量,你现在需要做的就是要查出1.1号的米饭数量对吧
TP我以前玩过,是MVC的,这样的话,你其实可以这样,
在取当天销售包子的数据时,根据日期查询当天的米饭数量,然后一同放进数组,然后的模板里直接打印,
直观点就是原本一个数组

<?php
$data=array('20130101'=>array('baozi'=>12),
'20130102'=>array('baozi'=>16));
foreach($data as $k=>$v)
select sum(mifan) from table where 时间在20130101这天,
得到数量$n
$data[$k]['mifan']=$n;

这样下来数组$data就会变成:

$data=array('20130101'=>array('baozi'=>12,'mifan'=>...),
'20130102'=>array('baozi'=>16,'mifan'=>...));
你直接在模板文件里取对应字段值就可以了,

因为没看到你的代码,所以解释的可能不清,有问题欢迎追问,
追问
Select url, Count(*) As c From `".$begin."` where is_uid='1' and ref_type='sina' group by url ORDER BY `c` desc

$begin 是一个表,表是按照时间命名的追问

我只是想知道 +0的意义是什么 只是求解这个而已 其它不做考虑

参考技术B 查询出来是string , +0 转成int本回答被提问者采纳

将包含 where、group by、sum 和必须的 MySQL 语句转换为 Linq to Sql

【中文标题】将包含 where、group by、sum 和必须的 MySQL 语句转换为 Linq to Sql【英文标题】:Convert a MySQL statement containing where, group by, sum and having to Linq to Sql 【发布时间】:2014-11-29 15:39:04 【问题描述】:

我正在尝试将以下 MySql 转换为 Linq 到 Sql(有或没有 Lambda 表达式)

select * from table where table.column2 sum(table.column3 = 1)

有可能吗?如果有的话,有什么建议吗?

Column1 是一个字符串, Column2 是一个日期时间, Column3 是 TinyInt(布尔值)

【问题讨论】:

【参考方案1】:
IQueryable<MyType> query = // get table IQueryable from the Linq2Sql data context

var dateTime = DateTime.Parse("2014-11-27");
var result = query.Where(t => t.Column2 < dateTime)
    .GroupBy(t => t.Column1)
    // Linq doesn't have HAVING, you can just use Where(). Here, we're operating on
    // an IQueryable of IGrouping, and we're filtering based on taking sums over the groups
    .Where(g => g.Sum(t => !t.Column3 ? 1 : 0) > g.Sum(t => t.Column3 ? 1 : 0))
    // it's not clear to me what you want here. Without any Select, each full grouping will get
    // pulled into memory as an IGrouping. If instead you just want the Column1 values, you'd
    // want .Select(g => g.Key)
    .Select(...);

注意,我在这里假设您已将 Column3 映射到实体类中的布尔值。如果您将它作为一个字节,那么您将不得不使用t.Column3 == 0 而不是!t.Column3

【讨论】:

Column3 是实体中的一个枚举器,它正在阻止上述工作 @HarryParker 数据库中的Column3是什么类型?您可以将您的数据库表架构和 Linq2Sql 实体类添加到您的帖子中吗?

以上是关于thinkphp mysql语句 sum的主要内容,如果未能解决你的问题,请参考以下文章

Thinkphp 下 MySQL group by 接count 获得条数方法

mysql-源码包安装

thinkphp中的lock与mysql的for update的使用注意事项

Thinkphp怎么批量更新数据

Linux 安装MySQL5.7.18

001thinkphp开发环境搭建