‘壹’ php mysql group分组后怎么排序
在group时使用*查询有些不合适的, 建议仔细研究group的作用.
一般使用group时, select 字段列表里,一定要包含group的字段, 其余的字段也必须和group字段一一对应的, 不然查询结果会有问题. 然后再根据字段列表里的某些字段进行排序就没有问题了.
--group_name,group_id,group_add_time个字段分别为分类名称,分类id和分类添加的时间,它们是一一对应的.如此查询是正确的
selectgroup_name,group_id,group_add_timefromtable_namegroupbygroup_idorderbygroup_add_timeasc;
--查询错误.一个分组(group_id)里可能有多个uid,非一一对应
selectuid,group_name,group_id,group_add_timefromtable_namegroupbygroup_idorderbygroup_add_timeasc;
‘贰’ php问题, 有105个数字,每10个分组,总共分11组
$char="0..105";//填0-105数字
$cut=10;//设定分割每组数量
$len=ceil(strlen($char)/$cut);
$_tmp=array();
for($i=0;$i<$len;$i++){
$_tmp[]=substr($char,$i*$cut,$cut);
};
var_mp($_tmp);exit;
‘叁’ ThinkPHP分组汇总统计如何实现
分组查询原理都是SQL的分组查询,THINKPHP中只是用到他自己的一些自定义的方法!比如
join()、group()、having()方法等,实际对应的也是SQL里的这些关键字!
例如本次需求是要按照cid进行分组,按照通常的做法是 SELECT * FROM 表名 GROUP BY
cid,这样就能按照cid进行分组筛选!然后使用THINKPHP的时候则使用 M('表名')->group('cid')->select();
实际生成的语句和原始SQL代码是一样的。
join通常有下面几种类型,不同类型的join操作会影响返回的数据结果。
INNER JOIN: 等同于 JOIN(默认的JOIN类型),如果表中有至少一个匹配,则返回行
LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
FULL JOIN: 只要其中一个表中存在匹配,就返回行
‘肆’ 如何实现PHP根据数组的值进行分组
PHP根据数组的值分组,php array中没有自带这个函数但是很常用
代码:
$_array = array(
array(1,11,'2016-05-18'),
array(2,11,'2016-05-18'),
array(3,22,'2016-05-18'),
array(4,22,'2016-05-18'),
array(5,33,'2016-05-19'),
array(6,33,'2016-05-19'),
array(7,44,'2016-05-19'),
array(8,44,'2016-05-19'),
array(9,55,'2016-05-20'),
array(10,55,'2016-05-20'),
);
var_mp(array_val_chunk($_array));
function array_val_chunk($array){
$result = array();
foreach ($array as $key => $value) {
$result[$value[1].$value[2]][] = $value;
}
$ret = array();
//这里把简直转成了数字的,方便同意处理
foreach ($result as $key => $value) {
array_push($ret, $value);
}
return $ret;
}
运行结果如下:
array(5) {
[0]=>
array(2) {
[0]=>
array(3) {
[0]=>
int(1)
[1]=>
int(11)
[2]=>
string(10) "2016-05-18"
}
[1]=>
array(3) {
[0]=>
int(2)
[1]=>
int(11)
[2]=>
string(10) "2016-05-18"
}
}
[1]=>
array(2) {
[0]=>
array(3) {
[0]=>
int(3)
[1]=>
int(22)
[2]=>
string(10) "2016-05-18"
}
[1]=>
array(3) {
[0]=>
int(4)
[1]=>
int(22)
[2]=>
string(10) "2016-05-18"
}
}
[2]=>
array(2) {
[0]=>
array(3) {
[0]=>
int(5)
[1]=>
int(33)
[2]=>
string(10) "2016-05-19"
}
[1]=>
array(3) {
[0]=>
int(6)
[1]=>
int(33)
[2]=>
string(10) "2016-05-19"
}
}
[3]=>
array(2) {
[0]=>
array(3) {
[0]=>
int(7)
[1]=>
int(44)
[2]=>
string(10) "2016-05-19"
}
[1]=>
array(3) {
[0]=>
int(8)
[1]=>
int(44)
[2]=>
string(10) "2016-05-19"
}
}
[4]=>
array(2) {
[0]=>
array(3) {
[0]=>
int(9)
[1]=>
int(55)
[2]=>
string(10) "2016-05-20"
}
[1]=>
array(3) {
[0]=>
int(10)
[1]=>
int(55)
[2]=>
string(10) "2016-05-20"
}
}
}
‘伍’ php 分组显示数据例如1-100,101-200这样
$tab=100; 每个显示多少
$total=一共多少。(select cout(*) from xx);就可以
$page=ceil($total/$tab)需要几页,比如一共10个,每页3个就是10/3=3.....1,所以ceil向上取整10/3=4页
$nowPage=0;
然后select * from xx limit $nowPage*$tab,$tab;就可以取出相应的了
第一个 就是0,0*100然后取100条,就是1-100;
然后1*100,再取100条,就是 101-200;
‘陆’ php mysql 分组统计问题
php不懂,
SQL 写给你
SELECT user, SUM(shul) shul FROM h_user GROUP by user