重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
?php
创新互联建站是网站建设技术企业,为成都企业提供专业的成都网站设计、网站制作,网站设计,网站制作,网站改版等技术服务。拥有10年丰富建站经验和众多成功案例,为您定制适合企业的网站。10年品质,值得信赖!
if($_POST['cid']){//拿到分组的ID值
$sql = "SELECT * FROM `deptuser` WHERE `cid` = ".$_POST['cid'];
$result = mysql_query($sql);
if($result mysql_num_rows($result)){
while($rows = mysql_fetch_assoc($result)){
$arr[] = $rows;
}
}else{
echo "没有成员数据";
}
}
foreach ($arr as $key = $value) {
if ($key == 'uid') {
$newname['name'] = getUserName($value);
}else{
$newname[$key] = $value;
}
}
//这个就是分组下带用户名的数组
print_r($newname);
function getUserName($uid){
$sql = "SELECT name FROM `user` WHERE `uid` = ".$uid;
$result = mysql_query($sql);
if ($result) {
$rows = mysql_fetch_assoc($result);
return $rows;
}else{
echo "查询没有用户名";
}
}
?
//也可以这样
//?php
$sql = "SELECT a.name,a.id,b.uid,b.cid FROM user as a,deptuser as b WHERE a.uid = b.uid AND b.cid = ".$_POST['cid'];
?
望采纳 Thx
本人用ThinkPHP3.2,今天正在开发一个需要分组显示的功能,可是从数据库中把相应数据读取后直接用group分组,结果每组显示的是最老的记录,我的需求是要显示每组的最新记录。在网上大搜一翻后,未果,本人决定自行研究,现将方法记录于此以防遗忘。
其实很简单,以供就两步:
第一步:
将符合条件的数据全部取出,暂不用group分组,作为子查询:
[php] view plain copy
$subQuery = $model-field('id,name')-table('tablename')-where($where)-order('time desc')-select(false);
第二部:
利用子查询进行查询分组
[php] view plain copy
$model-table($subQuery.' a')-group('field')-select();span style="font-family: Arial, Helvetica, sans-serif;" /span
好了,思路就是这样。希望对大家有帮助!
分组查询原理都是SQL的分组查询,THINKPHP中只是用到他自己的一些自定义的方法!比如 join()、group()、having()方法等,实际对应的也是SQL里的这些关键字!
例如本次需求是要按照cid进行分组,按照通常的做法是 SELECT * FROM 表名 GROUP BY cid,这样就能按照cid进行分组筛选!然后使用THINKPHP的时候则使用 M('表名')-group('cid')-select(); 实际生成的语句和原始SQL代码是一样的。