『壹』 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